软连接和硬连接的区别

1.  硬连接

文件系统以Inode号为标识,而同时也提供可读性强的字符串作为文件的标识。对应关系如下面这样:

                 软连接和硬连接的区别_第1张图片

当我们在利用名字操作文件时,文件系统会转换为Inode进行操作。那么硬连接就是有不止一个名字对应于Inode。底层文件系统看来还是一个文件实体和一个Inode。如下图所示:     

软连接和硬连接的区别_第2张图片
示例:

软连接和硬连接的区别_第3张图片

图中,一开始创建了一个orgin文件,写入字符串“hello”, 随后,又有一个叫sec的文件链接上来了。使用命令  ls -i 查看,发现Inode编号一致,如下所示:

软连接和硬连接的区别_第4张图片

此时,修改文件内容:

软连接和硬连接的区别_第5张图片

状态则如下图所示:

软连接和硬连接的区别_第6张图片

2. 软连接

软连接是将一个文件的绝对路径写入另外一个文件中,软连接是文件系统中除了普通文件,目录外的第三类文件,软连接的文件内容存放着原文件的路径,如下图软连接文件的内容与原文件名name1对应。如下图所示:

软连接和硬连接的区别_第7张图片

 

操作:

软连接和硬连接的区别_第8张图片

创建了一个叫softlink的软连接链接到orgin文件,该软文件类型是 'l '(最左侧的字母,与此对应的是普通文件用 '-', 目录文件用 'd' ), 它的长度为5 (见下文解释),使用cat程序时,返回的是原文件的内容,而此时的状态是:

软连接和硬连接的区别_第9张图片

这时候,如果通过软连接修改文件的话,从上面可以看出,原文件会同步修改。如果删除原文件,会导致软连接失效,成为断链(dangling reference)。

此外,查看软连接内容用readlink:

至于,现在终于知道为什么显示软连接的文件长度是5(见上文)了, 因为它存放的内容是 "orgin", 长度为5。本次实验的软连文件和原文件是在一个目录下,那么,如果存放在不同的目录下,软连接文件的内容和文件长度是什么样子的呢?我想你心中已经有答案了,去验证吧~

你可能感兴趣的:(软连接和硬连接的区别)