Linux的软链接和硬链接的区别

软链接和硬连接的区别

在前面的学习中我们了解到,linux的文件信息分为两个部分:数据(data)与元数据(matadata)
元数据中包含了文件的附加属性,其中有一项属性为Inode。Inode是用来区分每一个不同文件的唯一标识,而非文件名,inode类似于我们的身份证号,每个文件都有一个唯一的inode。而文件名仅仅是用来方便人们的记忆和使用,系统寻找文件是通过文件的inode号来寻找正确的文件数据块。

在linux系统中,为了解决文件共享的问题,引入了链接文件。链接文件分为两种:一种是硬链接(Hard Link),另一种是软链接或者也称为符号链接(Symbolic Link)

我们可以使用ls -l (ll)命令来看下目录中是否有链接文件
在这里插入图片描述
在linux系统中我们可以通过ln命令来创建链接文件,使用连接文件不仅实现了linux系统共享,还带来了隐藏文件路径、增加权限安全及节省存储等好处。

硬链接

在Linux系统中,多个文件名指向同一索引节点(Inode)是正常且允许的。一般这种链接就称为硬链接。硬链接的作用之一是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要的文件,以防止“误删”源数据(很多硬件,如netapp存储中的快照功能就应用了这个原理,增加一个快照就多了一个硬链接》。不过硬链接只能在同一文件系统中的文件之间进行链接,不能对目录进行创建。之所以文件建立了硬链接就会防止数据误删,是因为文件系统的原理是,只要文件的索引节点还有一个以上的链接(仅删除了该文件的指向),只删除其中一个链接并不影响索引节点本身和其他的链接(数据的实体并未删除),只有当最后一个链接被删除后,此时如果有新数据要存储到磁盘上,被删除的文件的数据块及目录的链接才会被释放,空间被新数据暂用覆盖。

软链接

软链接(也叫符号链接),类似于windows系统中的快捷方式,与硬链接不同,软链接就是一个普通文件,只是数据块内容有点特殊,文件用户数据块中存放的内容是另一文件的路径名的指向,而且软链接文件拥有自己的inode号。通过这个方式可以快速定位到软连接所指向的源文件实体。软链接可对文件或目录创建。

软链接和硬链接的区别
1、是否为同一文件
硬链接:是同一个文件,首先在自己的工作目录下创建一个文件,然后进行链接的创建。然后用ls -li查看文件的属性,可以看到inode节点编号和链接数一模一样,文件的 inode 值,你可以简单把它想成 C 语言中的指针。它指向了物理硬盘的一个区块,事实上文件系统会维护一个引用计数,只要有文件指向这个区块,它就不会从硬盘上消失。
软链接:不是同一个文件,首先创建一个文件,然后做软链接,用ls -li查看属性,你会发现,这个软链接的 inode 竟然不一样啊,并且它的文件属性上链接数也不一样,这就说明它与之前我们创建的两个文件根本不是一个类型。

2、是否可以跨分区做链接
硬链接:不可以跨分区
软连接:可以跨分区

3、链接次数是否增加
硬链接:会增加,而且创建的新目录本身就有多个硬链接
软链接:不会增加

4、Inode编号是否改变
硬链接:链接文件和被链接文件inode号一样
软链接:软链接文件有属于自己的inode编号

5、相互关系
硬链接:相互之间是平等独立关系,删除一个硬连接,不受影响只是连接数减一
软链接:相互之间是依赖关系,如果删除源文件,软链接失效,找不到文件

6、对目录做链接
硬链接:不可以
软链接:可以

7、路径:原始文件路径
硬链接:创建链接时是相对于当前工作目录路径
软链接:创建链接时原始文件如果使用相对路径,应该是相对于链接文件的路径

8、文件类型
硬链接:跟源文件类型相同
软链接:表示为链接文件‘l’

9、命令实现
硬链接:ln命令不加参数
软链接:ln命令加-s参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值