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

时间:2012-01-28 02:53:15

标签: windows symlink ntfs

在较高级别,NTFS Junction PointsSymbolic Links之间唯一明显的区别是,Junction只能是目录,而SymLinks也可以定位文件。

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

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

6 个答案:

答案 0 :(得分:59)

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

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。

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

答案 2 :(得分:17)

从功能上讲,在Windows中,一旦创建,就没有真正的区别。但是,它们之间存在显着差异。连接只能用于创建指向同一驱动器或不同驱动器的文件夹的链接,但前提是这些驱动器位于本地系统上(您无法通过网络创建指向文件夹的连接链接。)符号链接但是,没有相同的限制。符号链接可用于链接到文件或文件夹,这些文件或文件夹可以位于同一系统(相同的驱动器或不同的驱动器)或网络共享上,并可以使用相对位置符号(" \\ system2 \ foldera \ file.txt"," d:\ foldera \ file.txt"," \\ system2 \ foldera"," d:\ foldera& #34;或" d:\ foldera \ folderb .."最后两个示例的结果链接是相同的位置。)相对位置符号可以是"。", " ..",当前驱动器相对功能(如果当前驱动器是c:,然后指定" \ tempa \ folderb"结果是指向c:\ tempa \ folderb的链接,)和当前目录相对(如果当前目录是d:\ foldera \ folderb,然后指定" d:file.txt"导致链接到d:\ foldera \ folderb \ file.txt。)

总结一下:连接点仅限于本地系统上的文件夹,而符号链接可以创建指向可通过UNC路径或本地系统访问的文件夹或文件的链接,这些位置的指定方式更为通用。符号链接基本上是连接点和硬链接的更通用的替代品。此外,在创建跨平台UNC路径链接时,符号链接与Unix和Linux兼容。

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

答案 3 :(得分:9)

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 :(得分:4)

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

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

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

  

MSDN:“符号链接旨在帮助迁移和应用程序与UNIX兼容.Microsoft已实现其符号链接,以便像UNIX链接一样运行。

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

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

答案 5 :(得分:0)

除了u8it的出色回答:

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

拖放到目标目录:

  • from logger import Logger from PySide2.QtCore import QObject class LongRunningProcess(QObject): def __init__(self, guilog_func): super(LongRunningProcess, self).__init__() self.log = Logger(guilog_func) def run(self): for i in range(1000): self.log.info(i) :将symbolic link移动到目标目录
  • symbolic link:将junction移动到目标目录

右键单击+属性:

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

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

  • original directory:选择symbolic link
  • original directory:选择junction