linux系统中,硬连接与软连接的区别

一、基本概念

ext4 文件系统会把分区主要分为两大部分:小部分用于保存文件的 inode (i 节点)信息;剩余的大部分用于保存 block 信息。
inode 的默认大小为 128 Byte,用来记录文件的权限(r、w、x)、文件的所有者和属组、文件的大小、文件的状态改变时间(ctime)、文件的最近一次读取时间(atime)、文件的最近一次修改时间(mtime)、文件的数据真正保存的 block 编号。每个文件需要占用一个 inode。在inode 中是不记录文件名的,那是因为文件名记录在文件所在目录的 block 中。
block 的大小可以是 1KB、2KB、4KB,默认为 4KB。block 用于实际的数据存储,如果一个 block 放不下数据,则可以占用多个 block。例如,有一个 10KB 的文件需要存储,则会占用 3 个 block,虽然最后一个 block 不能占满,但也不能再放入其他文件的数据。这 3 个 block 有可能是连续的,也有可能是分散的。
每个文件都独自占用一个 inode,文件内容由 inode 的记录来指向;
如果想要读取文件内容,就必须借助目录中记录的文件名找到该文件的inode,才能成功找到文件内容所在的 block 块;

二、硬链接

硬链接相当于一个指针,指向文件索引节点,系统并不为它重新分配inode。可以用:ln命令来建立硬链接。
当创建了一个文件的硬链接时,硬链接会使用和文件相同的inode号,此时原来的文件的inode连接数由最初的1变为了2,实际上硬链接和文件使用了相同的inode,只不过是inode连接数增加了,删除文件不会影响硬链接,删除硬链接也不会影响文件,硬链接的inode数会从2变为1,如下所示:
在这里插入图片描述
只有所有指向文件内容的指针都未被引用时,也即链接数减为0时,内核才会把文件内容从磁盘上删除。另外,硬链接,只能应用于文件,而不能应用于目录,而且不能跨文件系统(即分区)。
尽管硬链接节省空间,也是Linux系统整合文件系统的传统方式,但是存在一下不足之处:(1)不可以在不同文件系统的文件间建立链接(2)不能对目录创建硬链接,以防进入死循环。

三、软连接(符号链接)

符号链接是对一个文件的间接指针。硬链接直接指向文件的inode节点。
软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。它具有更大的灵活性,可以跨越不同机器、不同网络对文件进行链接。建立软链接,只要在ln后面加上选项 –s。
在创建文件的软链接时,软链接会使用一个新的inode,所以软链接的inode号和文件的inode号不同,软链接的inode里存放着指向文件的路径,删除文件,软链接也无法使用了,因为文件的路径不存在了;当再次创建这个文件时(文件名与之前的相同),软链接又会重新指向这个文件(inode号与之前的不同了),如下所示:
在这里插入图片描述在这里插入图片描述

四、硬链接与软连接的区别

硬链接原文件&链接文件公用一个inode号,说明他们是同一个文件,而软链接原文件&链接文件拥有不同的inode号,表明他们是两个不同的文件;在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系,就像文件被复制了一份一样;链接数目是不一样的,软链接的链接数目不会增加,硬链接会相应的加一;文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的,而这里软链接显示的大小与原文件就不同了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值