Fork me on GitHub

linux的硬链接和软链接

前言:

在linux的世界里,大部分情况下,文件名和inode是一对一的关系,文件一旦被删除,文件相关的inode信息就会被抹掉,文件占用的磁盘空间也会被释放。删了,就没了。

硬链接软链接技术,让linux世界里的文件和目录具备了副本和替身的能力。

硬链接

基于inode技术,linux允许多个文件名同时指向一个inode,好处就是,我们可以用不同的文件名去访问同一个文件,每次操作对文件内容的影响会波及到所有「副本」,删除掉一个「副本」,不会影响其他文件。
增加一个硬链接文件,仅仅是inode里的「Links」属性值加一,
删除一个硬链接文件,「Links」属性值减一。
只有「Links」属性值为0时,文件才会被彻底删除,回收其占用的空间。

语法:

1
ln sourcefile destfile

创建完成后,用ls -i查看文件,就会发现两个文件的inode号是相同的。
查看inode号

如果使用vim在同一个缓冲区(buffer)中打开这两个文件:
vim sourcefile
:new sourcefile
在操作其中一个文件时,会发现另一个窗口是同步联动的。

应用:

  • 多人修改同一个文件
  • 重要文件备份
  • 文件更新
  • 节省磁盘空间
  • 等。

注意:

  1. 无法为目录创建硬链接,但是操作系统在每个目录下创建了两个硬链接,一个是「.」,另一个是「..」,使用ls -ai可以看到这两个硬链接目录和inode号,前者代表了当前目录,后者代表了当前目录的父级目录。
  2. 硬链接不创建inode,所以无法跨文件系统,这一点可以由软链接实现。

软链接

软链接,类似于Windows系统中的快捷方式。
软链接会创建新的inode,inode里主要记录了源文件的路径,当访问软链接文件时,系统会帮你自动指向源文件,无论你操作的是源文件,还是软链接文件,其实你最终操作的都是源文件。
源文件删除了,软链接文件就成了无本之木,也就毫无意义,强制访问的后果就是「No such file or directory」。

语法:

1
ln -s sourcefile destfile

软链接可以创建目录的软链接,也能跨文件系统存在,在linux系统中被大量使用。一旦源文件/目录不存在了,软链接的使命也就完结了。

本文标题:linux的硬链接和软链接

文章作者:Daemon Ye

发布时间:2019年07月10日 - 08:05:45

最后更新:2021年10月24日 - 22:55:05

原始链接:http://yeyangjie.cn/linux的硬链接和软链接/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%