linux命令行学习(7):硬链接的实质

linux命令行学习(7):硬链接的实质_第1张图片

硬链接只在形式上是原文件的副本,实际上,在磁盘上,文件内容只放在一个地方,并不是建立一个硬链接,文件就复制了一份。建立硬链接,并不会增加文件的拷贝。

但为什么看起来,硬链接是原文件的副本呢?

原因就是i节点。

i节点,又称索引节点,英文inode。这个i,当然是index的首字母。

linux文件系统将文件索引节点号(就是i节点号)和文件名同时保存在目录中。i节点号指向了文件实际内容的物理地址。

如果我们建立文件的一个硬链接,目录中就增加了一对i节点号和文件名,其中,i节点号与原文件的节点号相同,只是文件名不一样了。这个文件名,就是硬链接名。因此,我们看到的实际效果是增加了一个文件(硬链接)。此时删除原文件,目录中的硬链接仍然保存了i节点号。在这种设计下,建立的硬链接跟原文件的地位完全一样,所以看起来像文件的副本一样。这也可以解释,为什么修改原文件或任何一个硬链接的内容,所有硬链接的内容都改变了。因为修改的都是i节点指向的内容,修改的都是一个地方。

可以广义地理解硬链接:当一个文件创建时,就有了一个硬链接,那是它自己。以后可以根据需要增加硬链接。当删除时,要把所有硬链接删除完,这个文件的实际内容才会被删除。

所以,一个文件,通过建立硬链接的方法,可以存在于不同的目录中,方便使用。但是,又不增加存储负担。实现这一点的关键,就是i节点。

你可能感兴趣的:(linux命令行学习(7):硬链接的实质)