关于 Linux 的 hard link

关于 Linux 的 hard link,第1张

hard link 跟 symbolic link 最大不同之处是 hard link 直接指到 original file 的 inode,所以你就把hard link 想成就是真正的 file,所以 hard link 就是用个用不同的名字。

A 和 B 其实都是指到同一个inode上面。

可以从inode的number来证明:

(1) 先create一个file叫 /tmp/A

$ echo "123" >/tmp/A

(2) 用 ls -il 来看 inode 的 value (33 是 inode 的值):

$ ls -li /tmp/A

33 -rw-r--r-- 1 user1 grp1 4 Aug 10 12:20 /tmp/A

(3)造一个hard link 叫 /tmp/B:

$ ln /tmp/A /tmp/B

(4) 看他们的inode的值:(应该都是33)

$ ls -li /tmp/A /tmp/B

33 -rw-r--r-- 2 user1 grp1 4 Aug 10 12:20 /tmp/A

33 -rw-r--r-- 2 user1 grp1 4 Aug 10 12:20 /tmp/B

(5)用 find 来找所有inode等於33的档案:(应该找到 A 和 B):

$ find /tmp -inum 33 2>/dev/null

/tmp/B

/tmp/A

(6)delete file /tmp/A:

$ rm -f /tmp/A

(7)再用 find 来找所有inode等於33的档案:(应该只找到 B):

$ find /tmp -inum 33 2>/dev/null

/tmp/B

1、定义不同

链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。

硬链接就是一个文件的一个或多个文件名。把文件名和计算机文件系统使用的节点号链接起来。因此我们可以用多个文件名与同一个文件进行链接,这些文件名可以在同一目录或不同目录。

2、限制不同

硬链接只能对已存在的文件进行创建,不能交叉文件系统进行硬链接的创建;

软链接可对不存在的文件或目录创建软链接;可交叉文件系统;

/iknow-pic.cdn.bcebos.com/35a85edf8db1cb13784969b9d354564e92584b73"target="_blank"title="点击查看大图"class="ikqb_img_alink">/iknow-pic.cdn.bcebos.com/35a85edf8db1cb13784969b9d354564e92584b73?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="https://iknow-pic.cdn.bcebos.com/35a85edf8db1cb13784969b9d354564e92584b73"/>

3、创建方式不同

硬链接不能对目录进行创建,只可对文件创建;

软链接可对文件或目录创建;

4、影响不同

删除一个硬链接文件并不影响其他有相同inode号的文件。

删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即danglinglink,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。

Linux的ln命令如果不用-s选项,建立的连接文件就是Hard link,如果ln命令加-s选项就是建立Symbolic link。建立Hard link只能在同一个文件系统内进行,不能跨文件系统;还有,Hard link不能连接到目录,只能连接到文件。而Symbolic link就没有这些限制,因为Hard link的这些限制Symbolic link的使用要比Hard link更加广泛,这就是它们之间的区别。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7228647.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-03
下一篇2023-04-03

发表评论

登录后才能评论

评论列表(0条)

    保存