硬链接:指向同一个索引节点,进而指向同一个物理文件。只要有一个硬链接存在,物理文件就不会被清除。硬链接和原文件是“平等”的,只删除一个不能使文件真正被删除
软链接:指向一个新的索引节点,该节点指向的空间存的是文件的路径,根据路径找到物理文件。如果软链接创建时指定的那个目录被“删除”,则无法访问物理文件。软链接是附属于原文件的,删除、更改原文件路径后软链接将失效
如图,file是原文件,硬链接hard link和它指向了同一个索引节点,进而指向同一数据块。而软链接soft link指向了新的索引节点,数据块存的是file的路径,访问时是先获得路径(file),再访问真正的数据块的。
实验一 创建原文件myfile,硬链接hard1、hard2,软链接soft1、soft2
现象:硬链接的地址和myfile一样(290709),都是i节点的地址,指向的空间存的是真正的文件。软链接的地址和myfile不一样,也各不相同(290710和290711)。它的地址是i节点地址,指向的空间存的是文件的路径(myfile的路径)
实验二 删除原文件myfile
现象:硬链接hard1仍能访问,软链接soft1不能访问
原因:有硬链接存在,所以物理文件没有真正删除。访问软链接时,是从myfile这个目录查找的,而这个目录链接被删除了,所以找不到
实验三 修改软链接指向的文件soft2
现象:刚才删除的myfile又可以访问了,且内容和修改的soft2一致。soft1的内容也和soft2一样。而硬链接hard1和hard2的内容没有变(忘记截图了😓)。myfile的i节点地址和最初创建时不一样了(从290709变成了290712),说明myfile指向了不同i节点,不同的物理存储空间。
原因:修改soft2相当于修改它指向的目录,即myfile所链接的目录,故重新创建文件并写入内容。重新创建时要分配新的物理空间和对应的i节点(290712)。注意这个file和之前删除的file虽然名字一样,但其实是两个文件了(删除的file现在被hard1和hard2引用)。
实验四 将myfile移动到myfile2
现象:i节点地址保持不变。hard2仍然可以访问,soft2则不能。
原因:将myfile移动到myfile2,仅仅是目录名称改变了,而i节点和真正的存储空间都不变。硬链接和原文件是“平等”的,所以改变myfile不会影响到hard2。但访问软链接soft2时,是根据原来的路径myfile查找的,所以找不到了