
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更加广泛,这就是它们之间的区别。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)