小智 46

硬链接和软链接之间的不同语义使它们适用于不同的事物。

硬链接:

  • 与其他目录条目无法区分,因为每个目录条目都是硬链接
  • “原始”可以移动或删除,而不会破坏到同一 inode 的其他硬链接
  • 只能在同一个文件系统中
  • 权限必须与“原始”上的相同(权限存储在 inode 中,而不是目录条目中)
  • 只能制作文件,不能制作目录

符号链接(软链接)

  • 只是记录指向另一个文件路径。(ls -l将显示符号链接指向的路径)
  • 如果原始文件被移动或删除,则会中断。(在某些情况下,链接指向当前占据特定位置的任何文件实际上是可取的)
  • 可以指向不同文件系统中的文件
  • 可以指向一个目录
  • 在某些文件系统格式上,符号链接可能具有与其指向的文件不同的权限(这种情况不常见)

  • “[E]每个目录条目都是硬链接。” 这是我以前从未见过的一个很好的观点,但我担心刚开始围绕链接的人不会明白。对于处于这种情况的人,这里有一个提示:您在运行 ls 命令时看到的文件和目录的布局与其所代表的存储系统并不完全相同。硬链接是对存储系统上单个文件的引用。一个文件存储一次。阅读“inode”。 (4认同)

Law*_*ceC 19

这两种类型的链接的目的是提供一种方法,使文件同时出现在两个位置。这有很多用途。10 次中有 9 次您想使用符号链接。

符号链接或“符号链接”有点像 Windows 快捷方式。符号链接的内容是指向文件/目录实际位置的指针。如果您删除真实文件,符号链接将变为“悬空”,并且不起作用。删除符号链接不会删除真实文件。您可以根据需要拥有多个指向单个文件(甚至其他符号链接)的符号链接。

但是,与 Windows 不同的是,它们在文件系统级别上工作,而不是在 shell 或应用程序级别上工作,因此几乎任何应用程序都会按预期“遵循”符号链接。 ls -al可以用作查看符号链接“指向”何处的快速方法。

硬链接甚至可以在较低级别上工作。硬链接是文件的实际物理文件系统级目录条目。从技术上讲,目录条目是一个硬链接,因此每个文件在某个目录中至少有一个硬链接。硬链接与其指向的文件不是分开的;如果一个文件在不同的目录中有多个硬链接,那么在rm所有硬链接都消失之前,使用类似工具删除硬链接并不会真正删除该文件。

我想不出使用硬链接的情况是常见的,甚至是需要的,除非您有意防止文件被删除或正在对分区或其他文件系统相关的事情做一些奇怪的低级工作。编辑:不过,这个问题的其他答案中有很好的想法!

  • Windows 快捷方式实际上与符号链接有很大不同:它们跟随目标,而且它们也是常规文件。(Windows 也有符号链接,但它们用得不多。)符号链接是纯文本的,只要您访问文件,就会读取目标文本。符号链接权限是否重要取决于操作系统和文件系统。 (4认同)
  • 真的很糟糕吗?会发生什么?我能够重现的最令人兴奋的是“符号链接的级别太多”错误消息。 (3认同)

gee*_*aur 13

硬链接对于基于磁盘的备份机制非常有用,因为您可以为每个备份拥有一个完整的目录树,同时为未更改的文件共享空间——并且文件系统会跟踪引用计数,因此当最后一次引用到给定的版本因为空间原因备份已过期/删除而消失,它使用的空间会自动回收。出于同样的原因,一些邮件客户端也将其用于归档到多个文件夹的邮件。

  • 也许基于磁盘的版本控制机制?如果您对某些内容进行硬链接,则它不是备份。如果原始文件被破坏,它的每个硬链接也会被破坏。 (5认同)