Linux的硬链接与软链接(符号链接)

Linux的文件链接方式分为硬链接与软链接(也叫符号链接)两种,在Linux中链接也被视为文件来看待,一样可以被执行、编辑和访问。对系统中的应用程序而言,对链接的操作就是对原始文件的操作,所以链接不是副本。如果熟悉Linux的文件系统与目录树(相关博客链接扩展文件系统文件系统与目录树的关系),知道这两者间的联系的话可以很容易理解这两种文件链接方式的原理和区别。

文件系统告诉我们,任何一个文件(包括目录)都会占用一个inode和至少一个block,而由文件系统与目录树的关系可知,创建一个新文件时,文件系统会在这个新文件所在的目录的block中记录新文件的各种信息,包括inode号码、属性、权限等,而这个新文件的inode内又记录着存放该文件实际内容的block号码(相当于指针)。那么对于文件链接的创建呢?

 

硬链接

当我们创建一个文件的硬链接时,实际上是在该文件所属目录的block中写入了一条可以连接到该文件的inode的记录。也就是说,硬链接只是在某个目录下新建一条文件名连接到某inode号码的关联记录而已。通常情况下创建一个硬链接不会导致存储空间变化,除非文件所属目录的block刚好被写满的时候才会用到新的block来记录这个文件名关联性,导致磁盘空间变化。所以当我们对硬链接进行编辑、执行等操作时,都是对源文件进行操作。但如果删除这个硬链接并不会删除掉源文件,因为源文件的inode与block并没有被释放掉。如果删除源文件,硬链接也会随之被删除,因为硬链接本身就存在于源文件所属目录的block中。
由硬链接的原理可以知道硬链接还有如下特点与限制:

·硬链接不能跨文件系统(这是显而易见的);

·不能创建一个目录的硬链接;

·硬链接不占用空间。

对于第二点,因为如果使用hard link连接到目录时,连接的数据需要连同被连接目录下面的所有数据都建立连接,而且未来如果要在这个硬链接下面再创建一个文件时,其源目录下面的所有内容都得再创建一次hard link,这会使文件系统越来越庞大又复杂,无论是对文件系统还是对管理员来说都是不可接受的。

 

 

 

软链接(符号链接)

符号链接类似于Windows系统的快捷方式,创建一个符号链接时文件系统将会为其分配inode和block,而这个block记录的内容其中就有源文件的inode号码,所以符号链接在文件系统中是一个实际文件。
符号链接有如下特点(注意与硬链接的对比):

·可以创建目录的符号链接;

·符号链接会占用空间;

·如果支持多文件系统,符号链接是可以跨文件系统的。

当我们对符号链接进行编辑、执行等操作时,也可以对源文件进行操作,当然符号链接由于是一个实际文件也有其特有的属性,可以单独对符号链接本身进行操作。删除符号链接时源文件也不会被删除,而一旦源文件被删除,源文件的符号链接的连接作用也失效了,但符号链接本身还存在,这点与硬链接不同。

 

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值