Geo*_*los 2 symbolic-link hard-link
我已经很长时间没有使用硬链接了,直到在面试中被问到我才真正需要它们。我在这里阅读了它们与符号链接的区别:硬链接和符号链接有什么区别?
设计没有在同一个链接文件中同时具有符号链接的功能和硬链接的功能是否有任何特殊原因?
你想指向一个文件。好的,所以您从硬链接功能开始,以涵盖更改文件名或移动文件的情况。如果硬链接无效,因为它在文件系统之外引用或由于某些其他原因失败,则有一个 fallback,要引用的文件的文件路径,换句话说,有一个符号链接。
因为操作系统的用户最终想要的只是一个指向文件的链接。
有什么可以阻止上述链接设计解决方案的吗?
我真的不明白你的意思。我想你误解了什么是硬链接。首先,所有文件都是硬链接。每一个。文件只是指向 inode 的链接。另一方面,符号链接是指向硬链接(指向路径)的链接。两者怎么可能结合?
更重要的是,功能非常不同。考虑一下:
$ echo "This is file" > file
$ ln -s file softlink
$ ln file hardlink
$ cat softlink
This is file
$ cat hardlink
This is file
$ rm file
$ echo "This is a different file" > file
$ cat softlink
This is a different file
$ cat hardlink
This is file
Run Code Online (Sandbox Code Playgroud)
如上所示,删除硬链接指向的文件不会影响硬链接,因为硬链接指向 inode。另一方面,由于新文件现在指向不同的 inode,因此在删除和重新创建目标时会更改软链接。
此外,由于硬链接指向 inode 而不是文件系统路径,因此它们不能是相对的。例如,让符号链接指向../../foo. 这样,我们可以将整个目录结构移到其他地方并重命名我们喜欢的任何内容,但链接不会中断。因此,如果我们移动到不同的目录,软链接将始终指向上foo两级的a 。然而,硬链接只会指向它创建的任何索引节点,移动目录不会影响它。有时这就是我们想要的,有时不是。拥有这种多功能性非常有用。