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

Aar*_*n K 60 linux unix filesystems hardlink symlink

我听说您现在也可以在 Vista 中创建软链接。那么,UNIX/Linux/Vista 上的软(符号)链接和硬链接有什么区别?

使用一种比另一种有优势吗?或者它们只是服务于两个不同的目的?

dmc*_*ten 70

硬链接传统上共享相同的文件系统结构(unixspeak 中的 inode),而软链接是路径名重定向。

  • 硬链接必须在同一个文件系统上,软链接可以跨文件系统。
  • 即使您移动其中一个硬链接文件,它们也会保持链接(除非您将一个文件移动到另一个文件系统触发复制和删除机制)。如果您移动目标(原始),并且有时在移动链接时(您使用的是绝对路径还是相对路径?它仍然有效吗?),软链接文件会中断。
  • 硬链接文件是同等的,而原始文件在软链接中比较特殊,删除原始文件会删除数据。在删除所有硬链接之前,数据不会消失。
  • 软链接可以指向任何目标,但大多数操作系统/文件系统不允许硬链接目录以防止文件系统图中的循环(除了unix 目录中的...条目是硬链接)。
  • 软链接可能需要文件系统遍历工具的特殊支持。阅读readlink (2)

mat1t想起了一些细节。谢谢。)

  • 还应该注意的是,硬链接共享权限以及所有权信息。 (10认同)
  • 请添加 2 个硬链接是自动创建的名称。和 .. 每次创建文件夹时。在 Linux 中,这些是指向文件夹的唯一有效硬链接。 (6认同)

Mat*_*les 10

总结是符号/短链接充当第一个文件位置的快捷方式,而硬链接是磁盘上文件的快捷方式。

如果删除软链接的目标,则软链接将停止工作,但如果删除硬链接的一份副本,该文件将保留在磁盘上,直到删除所有硬链接为止。实际上,所有文件名都是磁盘上文件的硬链接。

还有一些限制,例如我认为您不能创建文件夹的硬链接,但您可以创建它们的软链接。软链接还可以指向不同驱动器和分区上的文件/文件夹,而硬链接则不能。