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


59

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

使用一个相对于另一个有优势吗?还是它们仅用于两个不同的目的?


实际上,答案是您几乎总是想使用符号链接。我的理解是,硬链接主要用于保留空间,尤其是在快照和增量备份中,其中连续的快照具有许多相同的文件,这些文件将来不太可能更改。
瑞安·汤普森

是否应该将其迁移到Unix和Linux?见unix.stackexchange.com/questions/9575/...
ripper234

2
不,不应该迁移。由于最初的问题不仅限于Unix,因此Windows支持硬链接和软链接。
理查德·韦斯特

1
如果您使用软链接,则某些应用程序会中断(有时甚至是严重的中断)-特别是对于目录:该软链接将被取消引用,并且当它与应用程序进行比较时,说/var/opt/log/appname(其配置)与已取消引用的值,例如/apps/appname/logs,它将抱怨这不是比赛。解决方法是使用mount --bind(在Linux上)将原始目录重新安装到新位置。
沃伦

1
只是为了澄清其他答案中包含的几点... Windows可以建立硬链接(尽管我相信它们的行为与Unix中的行为略有不同)。看一下mklink命令和h参数。(如果您在命令行中键入mklink,您将看到包含基本语法的帮助文件。)

Answers:


68

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

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

mat1t让我们想到了一些细节。谢谢。)


不错的总结。每个Linux用户都应该知道这一点(尽管硬链接很少见)。
Artem Russakovskii 09年

dmckee的答案非常准确地包含了有关语义的详细信息。我要添加的唯一详细信息是对更高级别操作的解释:软链接是一个单独的文件,而硬链接是指向现有数据的目录条目。Wikipedia包含有关链接和链接的更多详细信息。
Shiny和New安宇先生,2009年

很好的总结,非常有用
Razique

9
还应注意,硬链接共享权限以及所有权信息。
Corey S.

6
请补充说明,系统会自动创建2个名称为的硬链接。和..每次创建文件夹时。在Linux中,这些是指向文件夹的唯一有效硬链接。
Mircea Vutcovici 2011年

10

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

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

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


-1

MS Windows系统始终使用软链接(快捷方式)。也就是说,该链接仅充当指向文件位置的快捷方式。如果原稿的位置被移动,则链接断开。此外,您对快捷方式所做的操作(例如更改权限或更改快捷方式的名称)不会影响实际文件。

因此,问题始于错误的假设。是的,Vista使用软链接,但这不是新功能,这是MS快捷方式。


3
不,NTFS支持硬链接,并且自NTFS 3.1(自XP / 2003以来的最新版本)开始提供。
克里斯S
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.