我听说您现在也可以在Vista中创建软链接。那么,在UNIX / Linux / Vista上,软(符号)链接和硬链接之间有什么区别?还是它们仅用于两个不同的目的?

评论

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

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

不,不应该迁移。由于最初的问题不仅限于Unix,因此Windows支持硬链接和软链接。

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

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

#1 楼

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


硬链接必须位于同一文件系统上,软链接可以跨文件系统。复制和删除机制)。如果移动目标(原始),有时甚至在移动链接时,软链接的文件就会损坏(使用的是绝对路径还是相对路径?是否仍然有效?)。在软链接中是特殊的,删除原始链接会删除数据。直到所有硬链接都被删除,数据才会消失。目录是硬链接)。
软链接可能需要文件系统漫游工具的特殊支持。在readlink(2)上阅读。

(mat1t带回一些细节。谢谢。)

评论


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

– Artem Russakovskii
09年5月21日在2:01

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

– Shiny和New安宇先生
09年5月21日在13:19

总结不错,非常有用

–拉齐克
09年9月8日在23:07

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

– Corey S.
09年12月16日在22:36

请注意,系统会自动创建2个名称为的硬链接。和..每次创建文件夹时。在Linux中,这些是指向文件夹的唯一有效硬链接。

– Mircea Vutcovici
2011年4月18日在18:31



#2 楼

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

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

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

#3 楼

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

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

评论


不,NTFS支持硬链接,并且自NTFS 3.1(自XP / 2003起为当前版本)以来一直具有。

–克里斯S
2012年9月27日16:33