软链接和硬链接 | 学习笔记

简介: 快速学习软链接和硬链接。

开发者学堂课程【Linux文件管理命令:软链接和硬链接 】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/591/detail/8345


软链接和硬链接

 

内容介绍

.节点表概念及节点表结构

.硬链接

.软链接

 

.节点表概念及节点表结构

[root@centos7 boot] #cd

[root@centos7 ~] #

[root@centos7 ~] #

[root@centos7 ~] #1s -di /

64 /

[root@centos7 ~] #1s -di / /boot /data

64 / 64 /boot 64 /boot

[root@centos7 ~] #

[root@centos6 data] #cd

[root@centos6 ~] #1s -di /boot /data/ /

2 / 2 /boot 2 /data/

[root@centos6 ~] #1s -di /proc

1 /proc

[root@centos6 ~] #1s -di /proc /sys

1 /proc 1 /sys

[root@centos6 ~] #

 

.硬链接

1)硬链接

1.创建硬链接会增加额外的记录项以引用文件

2.对应于同一文件系统上一个物理文件

3.每个目录引用相同 inode

4.创建时链接数递增

5.删除文件时

rm 命令递减计数的链接

文件要存在时,至少有一个链接数

当连接数为零时,该文件被删除

6.不能跨越驱动器或分区

7.语法:

In filename [linkname]

Windows 中快捷方式的概念  当双击桌面,对应的打开了快捷方式

8. 指向的文件夹或者文件。

2)硬链接

对一个文件,起多个名字。

针对硬链接起多个名字

[root@centos7~] #cd / data

[root@centos7 data] #1s

dir1 f1 f2

[root@centos7 data] #11-i

total o

16777344 drwxr-xr-x 2 root root 26 sep 24 23:10 dir1

67-rw-r--r-- 1 root root 0 sep 24 22:49 f1

68-rw-r--r—1 root root 0 sep 24 22:50 f2[root@centos7 data] #1n f1 f11

total o

16777344 drwxr-xr-x 2 root root 26 sep 24 23:10 dir1

67-rw-r--r-- 2 root root0 sep 24 22:49 f1

67-rw-r--r-- 2 root root0 sep 24 22:49f11

68-rw-r--r-- 1 root root0 sep 24 22:50 f2

[root@centos7 data] #

f1跟 f11是同一个文件,只是名字不一样,理论上打开一个文件改动

[root@centos7 data] #cat f1

f1

[root@centos7 data] #cat f11f1

[root@centos7 data] #17-i

total 8

1677744drwxr-xr-x 2 root root 26 sep 24 23:10 dir1

67-rw-r--r—2 root root 3 sep 24 23:55 f1

68-rw-r--r-- 2 root root 3 sep 24 23:55 f11

68-rw-r--r-- 1 root root 0 sep 24 22:50 f2

[root@centos7 data] #

画图理解:相当于两个文件指向的文件是同一个,最外圈大矩形代表硬盘空间,小矩形代表 f1的内容,f1f11都是它的文件名,它们的节点编号都是同一个,指向的内容也是同一个

,所以通过 f1去访问的数据,改变数据,通过的f2看的的数据也会改变,因为两者指向的是同一数据。

3)链接数

提问:f1在硬盘中占三个字节,f1f11占据的总空间是多大

答案:三个字节(公用空间)

链接数:未创建 f11之前链接数是1,创建 f11之后,链接数变为2(本质上有几个名称)

删除链接 f11之后,链接数又变成1

硬链接会增长链接数,本质上,硬链接就是对一个文件起多个名字,所以同一个文件有多个名字,链接数就是同一个文件名称有几个,因此,创建一个链接会增长链接数,硬链接和原始文件没有主次之分,都是文件名称.

[ root@centos7 data] #11 -i

total 4

16777344 drwxr-xr-x 2 root root 26 Sep 24 23:10 dir1

67 -rw-r—r—1 root root  3 sep 24 23:55 f11

68 -rw-r—r—1 root root  0 sep 24 22:50 f2

[ root@centos7 data] #1n f2  /root/f22

1n: failed to create hard link /root/f22=>‘f2:Invalid cross-device link

[ root@centos7 data] #

(4) 硬链接不能跨越驱动器或分区

命令错误的原因:跨目录

硬链接不能跨越驱动器或分区

[ root@centos7 data] #1n /data/ f2 /root/f222

ln: failed to create hard link /root/f222=>‘f2:Invalid cross-device link

命令错误的原因:分区不同

[ root@centos7 data] #1n /data/ f2 /data/dir1/f22

5)硬链接不能针对目录实现

[ root@centos7 data] #1n dir1 dir1 2

1n: dir1:hard 1ink not allowed for directory

16777344 drwxr-xr-x 2 root root 37 sep 25 00:01 dir1

67-rw-r--r-- 1 root root3 sep 24 23:55 f11

68-rw-r--r-- 2 root root0 sep 24 22:50 f2

[root@centos7 data]#11-i dir1/ -a

total o

16777344 drwxr-xr-x2 root root 37 sep 25 00:01.

64drwxr-Xr-x. 3 root root 39 sep 24 23:57..

16777344-rw-r--r--i root rooto sep 2422:57f2

-rw-r--r--2 root root o sep 24 22:50 f22

16777344-rw-r--r--1 root rooto sep 24 23:10f3

[root@centos7 data]#

dirl 下有个点,点也是16777344,所以每个文件夹都有自己的目录,而且每个目录下都有点和两个点,所以每个文件至少都有两个链接数

[root@centos7 data]#mkdir dir1/dirl

16777344 drwxr-xr-x 3 root root 37 sep 25 00:01 dir1

67-rw-r--r-- 1 root root3 sep 24 23:55 f11

68-rw-r--r-- 2 root root0 sep 24 22:50 f2

文件夹的链接数变成3是因为在 dir1下建了一个子文件夹,dir2 中有两个隐藏的点,这点就是 dir1

 

.软链接

1)符号(或软)链接

1.一个符号链接指向另一个文件

2.1s-1的显示链接的名称和引用的文件夹

3.一个符号链接的内容是它引用文件的名称

4.可以对目录进行

5.可以跨分区

6.指向的是另一个文件的路径,其大小为指向的的路径字符串的长度,

7.不增加或减少目标文件 inode 的引用计数

8.语法:

1n-s filename [linkname]

2)创捷软连接

[root@centos7 data]#1n -s f2  f2-1ink

[root@centos7 data]#11

Tota1 4  

drwxr-xr-x  3 root root 49 sep 25 00:05 dir1

-rw-r—r--1 root root 3 sep 24 23:55 f11

-rw-r—r--2 root root 0 sep 24 23:55 f2

1rwxrwxrwwx 1root root 2 sep 25 00:07 f2-link ->f2

[root@centos7 data]#

创建软链接后,链接数并没有改变,并且 f2 f2link 不是同一个文件,因为属性都不同,节点号不同,所以软链接本质上不是同一个链接,通过 f2 f2link 访问的都是同一个链接。

f2链接文件删除后,文件不存在。因为软链接本质上是一个箭头,当文件夹消失后,就打不开文件夹,这时新建一个与原名称相同的新文件夹,即可打开新文件夹。

3)软链接支持文件夹

Dir1 f11 f2 f2-1ink

[ root@centos7 data]#1n -S dir1 dir1-link

[ root@centos7 data]#11

total 8

drwxr-xr-x 3 root root 49 Sep 25 00:05 dir1

1 rwxrwxrwx 1 root root 4Sep 25 00:10 dir1-link dir1

-rw—r—r—1 root root 3 sep 24 23:55 f11

-rw—r—r—1 root root 595 sep 25 00:09 f2

1 rwxrwxrwx 1 root root 2Sep 25 00:07 f2-link →f2

4)软链接针对文件支持跨分区

[ root@centos7 data]#1n -S /data/f2/root/f2222

dataroot 是不同的分区

[ root@centos7 data]#11/data/f2/root/f2222

-rw—r—r—1 root root 595 sep 25 00:09 /data/f2

1 rwxrwxrwx 1 root root 8ep 25 00:11 /root/f2222 /data/f2

所以软链接相对于硬链接应用更广泛,因为它限制更少

理解:外边大方框代表的是硬盘,f1 f11都是创建的硬链接,两者指向的是同一个文件,而 f1link 指向的是文件名,假如 f1被删除,则通过软链接不能直接访问文件。

5)软链接支持各种路径(相对路径和绝对路径)

例如绝对路径:dir1 dir1-link f11 f2 f2link

[ root@centos7 data]#1n -S /data/f2 /d1/d2/d3/f2-link

[ root@centos7 data]#11 /data/f2 /d1/d2/d3/f2-1ink

1 rwx rwxrwx 1 root root 8 sep 25 00:14 /d1/d2/d3/f2-link→、data/f2

-rw-r--r-- 1 root root 595 Sep 25 00:09 /data/f2

[ root@centos7 data ]#pwd

/data

[root@centos7 data]#1s

相对路径:

dir1 dir1-link f11 f2 f2link

[ root@centos7 data]#rm -f /d1/d2/d3/f2-link

[ root@centos7 data ]#pwd

/data

[ root@centos7 data]#ls

dir1 dir1-link f11 f2 f2link

[ root@centos7 data]#In -S f2 . . /d1/d2/d3/f2-link

[ root@centos7 data]#11 /d1/d2/d3/f2-1ink

i rwxrwxrwx 1 root root 2 Sep 25 00:16 /d1/d2/d3/f2-link -> f2

错误原因:认为 f2 f2link 处于同一目录下,相对路径要写对

相对路径:[ root@centos7 data]#In -S../../../data/f2 . . /d1/d2/d3/f2-link

[ root@centos7 data]#11 /data/f2 /d1/d2/d3/f2-1ink

1 rwx rwxrwx 1 root root 8 sep 25 00:18 /d1/d2/d3/f2-link../../../data/f2

生产中相对路径应用多余绝对路径

例如:[ root@centos7 data]#11 /etc/grub2.cfg

1 rwx rwxrwx 1 root root 22 sep 19 19:48 /etc/grub2.cfg../boot/grub2/grub.ctg

软链接:原始文件一般路径用相对路径,相对路径一定是相对于软链接文件的路径

6)硬链接和软连接的区别:

1.是否是同一个文件(根本区别)

2.能否跨分区

3.链接数是否增长

4.inode number 是否相同

5.原始文件删除,链接文件是否可以访问

6.原始文件与链接文件的大小

7.是否支持目录

8.相对路径写法不一样

7)确定文件内容

1.文件可以包含多种类型的数据

2.检查文件的类型,然后确定适当的打开命令或应用程序使用

3.file[options]<filename>…

4.常用选项

-b 列出文件辨识结果时,不显示文件名称

-f filelist 列出文件 filelist 中文件名得文件类型

-F 使用指定分隔符号替换输出文件名后默认的“:”分隔符

-L查看对应软链接对应文件的文件类型

--help 显示命令在线帮助

8)应用

1. file 确定文件类型

[ root@centos7 data]#file /dev/sd

如果不确定文件类型,直接就用 cat 查看文件,则可能造成乱码.

机制:file 命令可以分析文件类型,并非看文件后缀,而是通过查看文件信息查查看,这个叫做 magic number (魔数),不同文件头部会有体现文件不同类型的信息,这个就叫做“魔数”,file即是查看这个文件得格式来查看文件

2.-b 的应用

[ root@centos7 ~]#file /etc/profile

/etc/profileASCII text

[ root@centos7 ~]#file -b / etc/profile

ASCII text

3.-F 的应用

[root@centos7~]#file /etc/profile /dev /sda

/etc/ profile: ASCII text

/dev/sda :b7ock special

[root@centos7 ~]#file'-F"+" /etc/profile /dev/sdaetc/profile+ ASCII text

/dev/sda+b7ock special

[root@centos7~]#file'-F"l"/etc/profile /dev/sdaetc/ profilel ASCII text

/dey'dalblock special

4.-L 的应用

[root@centos7~]#file_(etclgrub2 .cfg.

/etc/grub2.cfg:symboliclinkto ../boot/grub2/grub.cfg'

[root@centos7~]#fi7e -Ll/etc/grub2.cfg

/etc/ grub2 .cfg: ASCII text

也可以同时判断几个文件,将几个文件写在一个文件中,之后调取这个文件就可以直接判断各个文件。

本章新学到的命令

1.lnln-s)                6.rm(删除文件)

2.rename                   7.mv(移动文件)

3.file                        8.tree(显示目录数结构)

4.mkdir(删除空文件夹)      9.lsof

5.rmdir(删除空文件)           10.dd

11.reset

面试的一个题目:

mv /dir1/f1 /dir2/fe和  ln-s /dir1/f1 /dir2/f2 的区别(必须搞懂原理)

相关文章
|
7月前
|
Unix 索引 Windows
硬链接和符号链接的不同点
【5月更文挑战第20天】硬链接和符号链接的不同点
501 1
5-14|如何生成软链接
5-14|如何生成软链接
|
7月前
|
索引 Linux Windows
ln -s 软链接和硬链接区别和总结
ln -s 软链接和硬链接区别和总结
ln -s 软链接和硬链接区别和总结
|
7月前
|
存储 Windows
windows系统的符号链接和硬链接的区别
【5月更文挑战第27天】windows系统的符号链接和硬链接的区别
170 0
|
Linux 索引 Windows
三分钟了解学会软链接和硬链接
符号链接又叫软链接,和原文件不是一个文件 例如Windows的快捷方式,如果原始文件被删除,所有指向它的符号链接也就都被破坏了。软链接有自己的node,是linux特殊文件的一种,作为一个文件,它的数据是它所连接的文件的路径。符号链接可以跨越文件系统,也可以为目录建立。
129 0
软链接
软链接
100 0
|
存储 Linux Windows
符号链接文件
符号链接文件
216 0
|
算法 Linux Windows
硬链接和软链接有什么区别
硬链接和软链接有什么区别
126 0

热门文章

最新文章