硬软链接的区别

简单总结下UNIX系统中的硬/软链接。

前置知识

所有类型的UNIX文件都是由操作系统通过索引节点(Inode)来管理的

索引节点是一个控制结构,包含关于操作系统所需的关于某个文件的关键信息

多个文件名能与一个索引节点相关联

例如,FreeBSD索引节点和文件结构如下:

image-20201220212528722

硬链接

  • 链接文件和被链接文件必须位于同一个文件系统
  • 不能建立指向目录的硬链接
  • 多个文件名链接到同一个索引节点,因此修改某一文件内容,则其它链接的文件也改变
  • 增加一个硬链接只是增加对应索引节点的引用计数
  • 删除文件只是对应索引节点引用计数-1,若索引节点的引用计数减为0,则文件被删除

例如:ln F2 H2

image-20201214161719186

如图,原文件和硬链接的inode相同:

image-20201220212829023

软链接/符号链接

  • 是一种特殊类型的文件,其链接内容是另一个目录或文件的路径
    • 对硬链接相比?(跨盘,可链目录)
  • 建立符号链接文件,并不影响原文件,它们是相互独立的文件
  • 可以理解为软链接所指向的文件存放了原文件的路径
  • 删除原文件,则符号链接能被控制但无法访问
  • 缺点
    • 空间和时间开销更大

如图,原文件和软链接inode不同:

image-20201220214053257