NTFS连接点和符号链接有什么区别?

问题描述 投票:113回答:5

在较高的层面上,NTFS Junction PointsSymbolic Links之间唯一明显的区别是,Junction只能作为目录,而SymLinks也允许也是目标文件。

两者之间还存在哪些其他差异?

(注意,我已经看过this question和我正在寻找的有点不同 - 这个问题正在寻找一个赞成和反对列表,我正在寻找一组技术差异)

windows symlink ntfs
5个回答
64
投票

符号链接具有更多功能,而结点几乎似乎是一个遗留功能,因为它们的局限性,但这些限制的安全含义特别是为什么结点可能比符号链接更受欢迎。远程定位使符号链接更具功能性,但也会提高其安全性配置文件,而联结更安全,因为它们受限于本地路径。所以,如果你想要一个本地链接并且可以使用绝对路径,那么你可能会更好地使用一个交叉点;否则,请考虑添加其功能的符号链接。

enter image description here

**速度/复杂性的差异声明来自Wikipedia entry on NTFS reparse points中的未经证实的声明(很好的阅读)。*


其他NTFS链接比较

以下是关于该主题的一些其他比较,但在考虑交叉点时这些可能会产生误导,因为它们没有列出我上面列出的好处。

Taken from here(一个很好的介绍性阅读)

enter image description here

来自SS64 page on MKLink

enter image description here


关于术语的评论

连接点是重新分析点(可以描述为符号链接)

NTFS Junctions和NTFS符号链接实际上以相同的方式(重新分析点)执行相同的操作,除了上述处理方式的差异。事实上,从技术上讲,Junction是一个更具一般意义上的“符号链接”,有时文档可能将Junction称为符号链接as is the case here。在这种情况下,“符号链接”并不意味着NTFS符号链接与结点不同(见下文)。

NTFS

尽管OP指明了这一点,但值得指出的是“符号链接”是一个非常通用的术语,并非特定于NTFS。所以,具体来说,这个比较是关于NTFS Junctions和NTFS Symbolic Links。


34
投票

我发现对差异最有用的地方:

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创建的符号链接与目录联结非常相似,但与目录联结不同,它可以指向文件或远程网络文件或目录。目标可以被定义为相对于符号链接位置的路径,或者当前卷中的绝对路径或另一个。另请注意,文件的符号链接与目录的符号链接不同,目标必须与定义匹配。


17
投票

从功能上讲,在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路径链接时,Symbolic Links与Unix和Linux兼容。

希望这能以令人满意的方式回答您的问题。编辑纠正印刷错误。


10
投票

Link Shell Extension,http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html,是创建和查看多种链接的绝佳工具。它还有很好的文档。

[在完整安装中,如果您正在查看高级链接,则会添加新的属性选项卡。同时为各种链接类型添加图标叠加箭头 - 如果没有显示,请滚动到FAQ部分; Windows仅支持十三种叠加;他展示了一个注册表解决方法。它的信息有用性的一个例子:未成功尝试获得您认为是文件夹的权限,但实际上是系统提供的连接链接,通常用于与旧版Windows的兼容性。

当为本地系统上的目录创建时,连接和符号链接的行为基本相同。

然而:

他们在网络上的行为不同。此链接描述了此行为:https://superuser.com/questions/343074/directory-junction-vs-directory-symbolic-link

如果你认为Junction Links是“愚弄操作系统和位置的快捷方式”,那么你将有一个很好的实用比较它们的使用和破坏它们。主要区别在于,如果复制符号链接或连接,它会复制目标,而不是(如快捷方式)复制包含指针的文件。与快捷方式一样,您可以删除符号或联结链接,而无需删除目标文件/文件夹。 [硬链接,该文件仅在删除最后一个链接时删除 - 包括从回收站中删除。查看LSE中的属性标记是否有任何链接,以查看硬链接的目标或引用计数。

硬链接或快捷方式是唯一可以移动的链接类型,没有任何副作用,如破坏或复制整个目标。移动目标总是会破坏链接,尽管可以在属性选项卡(用LSE显示)中轻松更新,或者使用LSE重新创建(如果复杂)。

符号链接的创建需要管理员权限,而连接则不需要。这加上Junctions广泛的内部操作系统使用表明Windows以直观,预期的方式处理它们。 [请注意系统文件夹的意外副作用(来自Win 10的经验)。]

[Link Shell Extension的一些特定于备份的功能非常有用 - 简而言之,它可以在标准文件夹中创建几种类型的可更新符号链接结构,以用于挂起备份目的。


4
投票

最近在Windows中引入了符号链接:来自Vista。

不应将符号链接视为现有NTFS“重新分析点”技术的替代方案。

微软解释说,符号链接的唯一目的是与Unix更兼容。

MSDN:“符号链接的设计有助于迁移和应用程序与UNIX的兼容性。微软已经实现了它的符号链接,就像UNIX链接一样。”

Vista也是使用链接实现自身功能的第一个操作系统。为了与传统文件夹名称兼容,C:\Documents and Settings现在是C:\Users的链接。

有趣的是,尽管Vista引入了符号链接,但这种“Documents and Settings”技巧实际上是一个普通的旧结。


1
投票

In addition to the excellent answer from u8it:

如果有人对Windows 10中Windows文件资源管理器中的行为差异感兴趣:

拖放到目标目录:

  • symbolic link:将symbolic link移动到目标目录
  • junction:将original directory移动到目标目录

鼠标右键单击+属性:

  • symbolic link:显示快捷方式属性
  • junction:显示original directory文件夹属性

鼠标左键单击左窗格(目录树):

  • symbolic link:选择original directory
  • junction:选择junction
© www.soinside.com 2019 - 2024. All rights reserved.