硬链接和符号链接有什么区别?

一篇好文章价值一千多篇文章。 因此,我只是在这里进行“复制粘贴”。

基本上,硬链接就像是指向它所指向文件内容的真实指针,而不管对引用文件的操作或硬链接所链接的文件如何。 相反,软链接或符号链接指向文件的名称,或者它引用该文件的名称,并且一旦删除或移动了所引用的文件,符号链接将不会知道更改,并且它将知道仍指向原始文件名,该文件名可能已被删除或移动。

http://askubuntu.com/questions/108771/what-is-the-difference-between-a-hard-link-and-a-symbolic-link

“一张图片胜过千言万语。”

而且,“一个例子值得一百段……”

创建两个文件:

$ touch blah1

$触摸blah2

在其中输入一些数据:

$ echo“猫”> blah1

$ echo“狗”> blah2

和预期的一样:

$ cat blah1; 猫blah2

让我们创建硬链接和软链接:

$ ln blah1 blah1-hard

$ ln -s blah2 blah2-soft

让我们看看发生了什么:

$ ls -l

等等

blah1-hard

等等

blah2-soft-> blah2

更改blah1的名称无关紧要:

$ mv blah1 blah1-new

$ cat blah1-hard

blah1-hard指向文件的索引节点(即内容),但未更改。

$ mv blah2 blah2-new

$ ls blah2-soft

blah2-soft

$ cat blah2-soft

猫:blah2-soft:没有这样的文件或目录

找不到文件的内容,因为软链接指向已更改的名称,而不是内容。

同样,如果删除blah1,则blah1-hard仍保留内容; 如果blah2被删除,则blah2-soft只是指向不存在文件的链接。