linux的软连接和硬连接

一、hard link(硬连接或实际连接)

如图1所示,硬连接文件名指向被连接文件内容对应的inode号。当文件1删除时,因为文件内容1对应的inode号仍有其他的连接,所以文件内容1不会被删除,仍可通过硬连接文件名2来访问。

从图2可知,文件1和硬连接文件名2均指向同一个inode。

硬连接不能跨文件系统,不能连接到目录。为什么不能连接到目录呢?这是因为hard link连接到目录时,连接的数据需要连同被连接目录下面的所有数据都建立连接,举例来说,如果要将/etc使用硬连接创建一个/etc_hd的目录时,那么在/etc_hd下面的所有文件名同时都与/etc下面的文件名要创建硬连接,而不仅仅连接/etc_hd和/etc而已。另外,未来如果需要在/etc下面创建新文件,连带的,/etc_hd下面的数据又得要创建一次hard link,因此造成环境相当大的复杂度。所以目前暂不支持硬连接目录。

图1 硬连接与软连接

图2 硬连接文件名和原文件名均指向同一个inode

二、软连接(符号连接)

如图1所示,软连接文件名指向被连接文件名对应的inode号。当文件1删除时,因为文件内容1对应的inode号没有其他的连接,所以文件内容1将被删除。通过软连接文件名3访问将无法访问原文件的内容。

从图3可知,文件1和软连接文件名2指向不同的inode。

图3 软连接文件名和原文件名指向不同的inode

原文地址:https://www.cnblogs.com/sunada2005/p/3041859.html