软链接和硬链接的区别

2017-10-26  本文已影响0人  lxy_悦

在Linux上,一个文件被分为两部分(如图一):用户数据 (user data) 与元数据 (metadata)。
inode号:即索引节点号, 它是文件元数据的一部分,也是文件的唯一标识而非文件名。

图一

通过文件名打开文件时:

图二

硬链接

创建硬链接,相当于多了一个文件别名。如果创建硬链接newfilename的话,如下图:

图三

接下来,我们用命令来验证一下。

1.在当前目录下,只有filename文件,如图:

命令: ll -i  (等同于: ls -li)
图四

注意,此时filename文件编号为521664。

  1. 然后在当前目录创建filename文件的硬链接,newfilename, 再次查看文件:


    图五

此时可以发现,filename和newfilename编号一致,权限也一样。

软链接

软链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块(见图六)。因此软链接的创建与使用没有类似硬链接的诸多限制:

图六

然后我们再来创建一个软链接 softlink-file 看看区别:

图七

会发现,出现不同的文件编号, 并且明确的看到。softlink-file 指向 filename。

本文参考来源:理解 Linux 的硬链接与软链接
推荐文章:https://www.jianshu.com/p/dde6a01c4094

上一篇下一篇

猜你喜欢

热点阅读