Linux下的硬链接与软链接

本文总结自:

https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/index.html#fig2

https://blog.csdn.net/mahao1107/article/details/46851969

一个文件可以用下图表示:

其中,文件名是我们能看到的那个名字。

inode被包含在元数据(metadata)中,元数据中记录文件的附加属性,比如文件大小,创建时间等等。

inode是索引节点号,是文件的唯一标识。可使用命令:

ls -i

来查看

data blocks是文件数据块,记录的是文件的真实内容

这里要说一句:

当我们用rm删除文件的时候,仅仅是解除filename和inode的引用,一般来说并不会摧毁问文件数据。
而硬链接,就相当于对同一个inode增加了一个别名

所以用rm删除文件的时候,如果对inode创建了硬链接,则还可以通过另一个filename来访问。

硬链接的创建方法:

ln oldfile newfile

软链接,则是创建一个data block,这个data block中存储的是另外一个filename。

所以当我们用rm删除了file,那么cat softlink将会得到实际文件的输出。

软链接的创建方法:

ln -s oldfile newfile

使用ls -l 命令可以看到文件的链接数,这个信息出现在输出的第二列.

创建软链接时,文件的链接数不会增

同时,可以看到->符号,这个符号的指向是从软链接文件指向源文件

使用ls -i指令可以发现,硬链接文件的inode号码和源文件相同,软链接文件的inode号码和源文件不同,这和以上的分析是相同的。

原文地址:https://www.cnblogs.com/geeklove01/p/8445605.html