小议软连接和硬链接

前言

首先介绍一下inode的概念,Linux下每一个文件都有一个inode节点,inode节点存储了文件的重要信息,如下

  • 文件的访问权限
  • 文件的所有者、所属组
  • 文件的大小
  • 文件的创建时间
  • 文件的最后修改时间
  • 文件的真是数据存放的地址

Linux下区分一个文件是根据inode节点而不是文件名,文件名只是方便表示而已。
小议软连接和硬链接大概可以用上面的图来解释一个文件的真实结构。

硬链接

ln sourcefile hardlink
可以通过这样的方式创建硬链接。创建的硬链接和源文件具有相同的inode,也就是说硬链接和源文件其实是同一个文件,只不过名字不同。

创建的一个硬链接之后,该文件的引用计数就会+1。

因为硬链接和源文件是同一个文件,当我们修改源文件或者硬链接时,该文件的所有硬链接都会改变…

当删除源文件时,引用计数减一,此时还可以硬链接还可以访问,只有当引用计数等于0时,该文件的数据才真正被删除。

删除文件的过程:
小议软连接和硬链接

软连接

创建软链接的方法:
ln -s sourcefile soft_link
软链接和源文件是两个文件,具有不同的inode,
只不过是软链接这个文件指向源文件。

可以将软链接理解为Windows中的快捷方式。当我们查看或者修改软链接时,其实就是在查看或修改源文件。

但是创建软连接并不会增加引用计数,当源文件被删除后,软链接也失效了。

借鉴:
ln - 软链接与硬链接区别