硬链接、软链接的关系

硬链接与软链接的联系

在Linux操作系统中,文件被分为两个部分:用户数据(user data)与元数据(metadata)。用户数据代表文件数据块(data block),数据块则代表记录文件真实内容的地方;元数据仅仅为文件的一些附加属性,例如文件大小、文件创建时间、文件所有者、文件所属权限等等的相关附加属性信息。在Linux文件系统中,元数据中的inode索引节点号才是文件的唯一标识。而文件名并不具备这种唯一标识作用,文件名的作用仅仅是为了方便人们对文件的记忆而已,对于系统或程序而言,都是通过inode号来寻找所需要的的文件数据块。

硬链接(ln)

为解决文件的共享使用, Linux 系统引入了两种链接:硬链接 (hard link) 与软链接(又称符号链接,即 soft link 或 symbolic link )。链接为 Linux 系统解决了文件的共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等好处。若一个 inode 号对应多个文件名,则称这些文件为硬链接。换言之,硬链接就是同一个文件使用了多个别名(他们有共同的 inode )。硬链接可由命令 link 或 ln 创建。
多个档名对应同一个 inode ,硬链接只是在某个目录下新增一笔档名链接到某个 inode 号码的关联记录而已。如果将上图中任何一个档名删除,档案的 inode 与 block 都还存在,依然还可以通过另一个档名来读取正确的档案数据。此外,不论用哪一个档名来编辑,最终的结果都会写入相同的 inode 和 block 中,因此均能进行数据的修改
缺点:

  1. 不可以在不同文件系统的文件间建立链接。
  2. 只有超级用户才可以为目录创建硬链接。

软链接(符号链接ln -s)

软连接就是建立一个独立的文件,而这个文件会让数据的读取指向它 link 的那个档案的档名,由于只是作为 指向的动作 ,所以当来源档案被删除之后,软连接的档案无法开启,因为找不到原始档名。连结档的内容只有档名,根据档名链接到正确的目录进一步取得目标档案的 inode ,最终就能够读取到正确的数据。如果目标档案的原始档名被删除了那么整个环节就进行不下去了。并且对于创建的软连接而言,以相对路径创建的软连接与以绝对路径创建的软连接又有所不同:前者在软链接地址变更后将失效,而后者则不会因为软链接本身的地址改变而导致失效。

硬链接与软链接的区别

  1. 硬链接原文件 与链接文件公用一个 inode 号,说明他们是同一个文件,而软链接原文件 /与链接文件拥有不同的 inode 号,表明他们是两个不同的文件;

  2. 在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系;

  3. 链接数目是不一样的,软链接的链接数目不会增加;

  4. 文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的。而这里软链接显示的大小与原文件就不同了,软链接的大小一般小于原文大小。

  5. 软链接没有任何文件系统的限制,任何用户可以创建指向目录的符号链接

总之, 建立软链接就是建立了一个 新文件 。当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到真正要访问的文件。

当然软链接也有硬链接没有的缺点: 因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,以绝对路径创建软链接可以避免这种情况的发生。而硬链接你想怎么移就怎么移;还有软链接要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。

本文借鉴:

https://blog.csdn.net/smilesundream/article/details/70215944
https://blog.csdn.net/hairetz/article/details/4168296

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值