Linux硬链接与软链接

硬链接与 软链接

在linux中,inode号才是文件的唯一标识,而非文件名。文件名只是为了方便人们的记忆和使用,系统或程序通过inode号寻找正确的文件数据块。
链接实际上是一种文件共享的方式,主流文件系统都支持。

硬链接

硬链接(hard link):文件A是文件B的硬链接,则A的目录项中的inode节点号与B的目录项中的inode节点号相同,即一个inode节点对应两个不同的文件名两个文件名指向同一个文件,A和B对文件系统来说是完全平等的。如果删除了其中一个,对另外一个没有影响每增加一个文件名,inode节点上的链接数增加一,每删除一个对应的文件名,inode节点上的链接数减一,直到为0,inode节点和对应的数据块被回收。注:文件和文件名是不同的东西,rm A删除的只是A这个文件名,而A对应的数据块(文件)只有在inode节点链接数减少为0的时候才会被系统回收。

符号链接

软链接(soft link):A是B的软链接(A和B都是文件名),A的目录项中的inode节点号与B的目录项中的inode节点号不相同,A和B指向的是两个不同的inode,继而指向两块不同的数据块。但是A的数据块中存放的只是B的路径名(可以根据这个找到B的目录项)。A和B之间是“主从”关系,如果B被删除了,A仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。

硬链接相当于一个指针,指向文件的索引节点,系统不会增加inode节点(也可以理解成一个文件在不同的环境下叫的别名,名字有多个,文件只有一个)即元数据是一样的。

而符号链接(也叫软链接)相当于一个软链接文件类似于Windows的快捷方式,是不同的文件,它们的元数据是不同的。

区别

因为硬链接指向同一个inode,所以不能跨文件系统
而且因为如果使用硬链接到目录的话,链接的数据需要连同被链接目录下面的所有数据都建立链接,会很复杂。并且我们ls一个目录,会发现目录文件最开始的两条数据是“.“和”…",也就是说,目录文件在文件里已经写死了自己在文件系统中的位置。建立硬链接的话,会是个集合,而且子目录也建立上层链接的话,会造成循环链接环。所以一般情况下硬链接也不能链接目录

硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以**防止“误删”**的功能。只删除一个连接并不影响节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。
链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值