1. 硬连接
文件系统以Inode号为标识,而同时也提供可读性强的字符串作为文件的标识。对应关系如下面这样:
当我们在利用名字操作文件时,文件系统会转换为Inode进行操作。那么硬连接就是有不止一个名字对应于Inode。底层文件系统看来还是一个文件实体和一个Inode。如下图所示:
示例:
图中,一开始创建了一个orgin文件,写入字符串“hello”, 随后,又有一个叫sec的文件链接上来了。使用命令 ls -i 查看,发现Inode编号一致,如下所示:
此时,修改文件内容:
状态则如下图所示:
2. 软连接
软连接是将一个文件的绝对路径写入另外一个文件中,软连接是文件系统中除了普通文件,目录外的第三类文件,软连接的文件内容存放着原文件的路径,如下图软连接文件的内容与原文件名name1对应。如下图所示:
操作:
创建了一个叫softlink的软连接链接到orgin文件,该软文件类型是 'l '(最左侧的字母,与此对应的是普通文件用 '-', 目录文件用 'd' ), 它的长度为5 (见下文解释),使用cat程序时,返回的是原文件的内容,而此时的状态是:
这时候,如果通过软连接修改文件的话,从上面可以看出,原文件会同步修改。如果删除原文件,会导致软连接失效,成为断链(dangling reference)。
此外,查看软连接内容用readlink:
至于,现在终于知道为什么显示软连接的文件长度是5(见上文)了, 因为它存放的内容是 "orgin", 长度为5。本次实验的软连文件和原文件是在一个目录下,那么,如果存放在不同的目录下,软连接文件的内容和文件长度是什么样子的呢?我想你心中已经有答案了,去验证吧~