在高层次上,NTFS Junction Points 和 Symbolic Links 之间唯一明显的区别是连接只能是目录,而符号链接也可以作为目标文件。
两者之间还有哪些不同之处?
(注意,我已经看过 this question 并且我正在寻找的是有点不同 - 这个问题正在寻找一个赞成和反对列表,我正在寻找一组技术差异)
符号链接具有更多功能,而由于它们的限制,连接几乎似乎是一个遗留功能,但这些限制的安全含义特别是为什么连接可能比符号链接更受欢迎。远程定位使符号链接更实用,但也提高了它们的安全性,而交叉点更安全,因为它们被限制在本地路径中。因此,如果您想要一个本地链接并且可以使用绝对路径,那么您可能最好使用交叉点;否则,请考虑为其附加功能的符号链接。
https://i.stack.imgur.com/Unr0S.png
*速度/复杂性差异的陈述来自 Wikipedia entry on NTFS reparse points 中未经验证的陈述(很好读)。
**自从 Windows 10 创意者更新以来,人们可以enable Developer Mode to remove the admin restriction for NTFS symbolic links。
其他 NTFS 链接比较
以下是有关该主题的其他一些比较,但在考虑连接时,这些比较可能会产生误导,因为它们没有列出我在上面列出的好处。
Taken from here(很好的介绍性读物)
https://i.stack.imgur.com/a4Fcy.png
https://i.stack.imgur.com/ihujz.png
对术语的评论
连接点是重解析点(可以描述为符号链接)
NTFS 连接和 NTFS 符号链接实际上以相同的方式(重新解析点)做同样的事情,除了前面提到的处理方式的差异。事实上,从技术上讲,Junction 是更一般意义上的“符号链接”,有时文档可能将 Junction 称为符号链接 as is the case here。在这种情况下,“符号链接”并不意味着不同于结点的 NTFS 符号链接(见下文)。
NTFS
尽管 OP 指定了这一点,但值得指出的是,“符号链接”是一个非常笼统的术语,并非特定于 NTFS。所以,具体来说,这个比较是关于 NTFS 连接与 NTFS 符号链接。
我发现对差异最有用的地方:
http://blogs.msdn.com/b/junfeng/archive/2006/04/15/576568.aspx
http://www.hanselman.com/blog/MoreOnVistaReparsePoints.aspx
假设:Symlink 是 Windows 中的 Junction,就像 Symlink 是 Unix 中的 Hardlink。
http://en.wikipedia.org/wiki/Symbolic_link#Windows_7_.26_Vista_symbolic_link
Windows 7 和 Windows Vista 使用命令行实用程序 mklink 支持文件和目录的符号链接。与连接点不同,符号链接还可以指向文件或远程服务器消息块 (SMB) 网络路径。此外,NTFS 符号链接实现提供了对跨文件系统链接的全面支持。但是,启用跨主机符号链接的功能需要远程系统也支持它们,这有效地限制了它们对 Windows Vista 和更高版本的 Windows 操作系统的支持。
http://www.tuxera.com/community/ntfs-3g-advanced/junction-points-and-symbolic-links/
由 Windows 创建的符号链接与目录连接非常相似,但与目录连接不同,它可以指向文件或远程网络文件或目录。目标可以定义为相对于符号链接位置的路径,或当前卷或其他卷中的绝对路径。另请注意,文件的符号链接与目录的符号链接不同,目标必须与定义匹配。
/sys
)。
从功能上讲,在 Windows 中,一旦创建,就没有真正的区别。但是,它们之间在可以做什么方面存在显着差异。联结只能用于创建文件夹链接,无论是在同一驱动器上还是在不同驱动器上,但前提是这些驱动器位于本地系统上(您不能通过网络创建指向文件夹的联结链接。) 符号链接但是,没有相同的限制。符号链接可用于链接到文件或文件夹,这些文件或文件夹可以位于同一系统(相同驱动器或不同驱动器)或网络共享上,并且可以使用相对位置符号(“\\system2 \foldera\file.txt"、"d:\foldera\file.txt"、"\\system2\foldera"、"d:\foldera" 或 "d:\foldera\folderb.." 以及生成的链接最后 2 个示例是相同的位置。)相对位置符号可以是“.”、“..”、当前驱动器相关函数(如果当前驱动器是 c:,则指定“\tempa\folderb”会导致链接到 c: \tempa\folderb,) 和当前目录相关(如果当前目录是 d:\foldera\folderb,则指定“d:file.txt”会导致指向 d:\foldera\folderb\file.txt 的链接。)
总结一下:连接点仅限于本地系统上的文件夹,而符号链接可以创建指向可通过 UNC 路径或本地系统访问的文件夹或文件的链接,在这些位置的指定方式上具有更多功能。符号链接基本上是连接点和硬链接的更通用的替代品。此外,在创建跨平台 UNC 路径链接时,符号链接与 Unix 和 Linux 兼容。
希望这能以令人满意的方式回答您的问题。编辑以纠正印刷错误。
Link Shell Extension http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html 是用于创建和查看多种链接的绝佳工具。它还具有出色的文档。
[在完整安装中,如果您正在查看高级链接,它会添加一个新的属性选项卡。 At 还为各种链接类型添加了图标覆盖箭头 - 如果这些未显示,请滚动到常见问题解答部分; Windows 仅支持 13 个叠加层;他展示了一个注册表解决方法。其信息有用性的一个示例:尝试获取您认为是文件夹的权限但实际上是系统提供的连接链接未成功,通常用于与旧版本的 Windows 兼容。]
为本地系统上的目录创建时,连接和符号链接的作用基本相同。
然而:
它们在网络上的行为不同。此链接描述了这种行为:https://superuser.com/questions/343074/directory-junction-vs-directory-symbolic-link
如果您将 Junction Links 视为“在位置上欺骗操作系统的快捷方式”,那么您将对它们的使用以及破坏它们的原因有一个很好的实际比喻。主要区别在于,如果您复制符号链接或连接,它会复制目标,而不是(如快捷方式)仅复制包含指针的文件。与快捷方式一样,您可以在不删除目标文件/文件夹的情况下删除符号链接或连接链接。 [硬链接,该文件仅在删除最后一个链接后才会被删除 - 包括从回收站中。查看 LSE 中的任何这些链接的属性标记,以查看硬链接的目标或引用计数。]
硬链接或快捷方式是唯一可以移动的链接类型,不会产生破坏或复制整个目标等副作用。移动目标总是会破坏链接,尽管它们可以很容易地在属性选项卡中更新(显示为 LSE)或重新创建,如果复杂的话,使用 LSE。
创建符号链接需要管理员权限,而连接则不需要。再加上广泛的、内部操作系统使用 Junctions 表明 Windows 以一种直观的、预期的方式处理它们。 [一定要警惕系统文件夹的意外副作用(来自 Win 10 的经验)。]
[Link Shell Extension 的一些特定于备份的功能非常有用 - 简而言之,它可以在标准文件夹中创建几种类型的可更新符号链接结构,用于挂起的备份目的。]
除了来自 u8it 的出色回答:
如果有人对 Windows 10 中 Windows 文件资源管理器的行为差异感兴趣:
拖放到目标目录:
符号链接:将符号链接移动到目标目录
junction:将原目录移动到目标目录
鼠标右键+属性:
符号链接:显示快捷方式属性
junction:显示原始目录文件夹属性
左键单击左窗格(目录树):
符号链接:选择原始目录
junction:选择结点
最近在 Windows 中引入了符号链接:从 Vista 开始。
不应将符号链接视为现有 NTFS“重解析点”技术的替代品。
Microsoft 解释说,符号链接的唯一目的是与 Unix 更兼容。
MSDN :“符号链接旨在帮助迁移和应用程序与 UNIX 的兼容性。Microsoft 已实现其符号链接,以便像 UNIX 链接一样发挥作用。”
Vista 也是第一个使用链接实现自身功能的操作系统。为了与旧文件夹名称兼容,C:\Documents and Settings
现在是指向 C:\Users
的链接。
有趣的是,虽然 Vista 引入了符号链接,但这个“Documents and Settings
”技巧实际上是一个普通的旧连接。