关于硬链接、连接点和符号链接为什么有用的答案有很多。
据我所知,从 Vista 开始支持连接点,并被描述为“目录硬链接”(即使它们是目录符号链接,与目录的硬链接完全不同)。我说得对吗?
相关地,为什么我们不能支持目录硬链接?这会影响文件系统的完整性吗?如果会,会怎样?
据我所知,目录符号链接仅存在于 Windows 中,以提供与 UNIX 文件系统的互操作性/兼容性。
我理解文件的硬链接允许保留文件的多个副本而无需任何额外存储空间。如果您不小心删除了其中一个硬链接,或者想要快速访问存储在很长路径中的文件,它们就很有用了。
但我是否错过了其他主要用途?
答案1
实际上,连接自 Windows 2000 以来就已存在;它是 Vista 中出现的符号链接。(严格来说,它们出现在 XP 中,但ntfs.sys
直到 Vista 才公开其功能。)连接和符号链接都与硬链接不同;前者都表示为不同的文件系统对象,而硬链接是同一文件对象的不同名称。最后一个事实可以通过注意文件的所有硬链接的 ACL 始终相同来验证。
我不认为符号链接只是为了兼容 Linux/Unix。文件夹的符号链接比连接点更通用,因为:
- 符号链接可以指向相对路径。虽然
mklink /j ..\..\relative\stuff
会成功,但最终的连接结果实际上是使用最终的绝对路径。(请参阅 的输出dir /a
。) - 符号链接可以指向远程卷或 UNC 路径。连接点则不能。
目录硬链接在理论上是可行的,但允许它们会引发一系列问题 - 目录将能够真正地包含它们自己。许多以递归方式检查文件系统的应用程序将无法运行,因为无法区分循环和非常深且名称奇怪的树。(使用符号链接和连接,条目是可以区分的。)应用程序必须查看 NTFS 簿记,但基本上没有人这样做。目录硬链接还可能使目录有两个(或更多!)真实父级。简而言之,破坏目录结构的非循环模型会产生大量的复杂性。进一步阅读:这个Unix&Linux问题(我知道,操作系统不同,但道理是一样的)。
我想你已经弄清楚了符号链接和连接点的主要用途。Windows 上的另一个常见用途是将驱动器安装为现有驱动器上的目录。(请参阅磁盘管理的更改驱动器号和路径。