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


139

在较高级别上,NTFS交接点符号链接之间的唯一明显区别是,交接只能成为目录,而SymLink也可以定位文件。

两者之间还有什么其他区别?

(请注意,我已经看到了这个问题,我所寻找的内容有所不同-该问题正在寻找一个利弊列表,我正在寻找一系列技术差异)

Answers:


87

符号链接具有更多功能,而结点由于其局限性而似乎几乎是旧功能,但是这些限制的安全隐患明确说明了为什么可能会优先使用结点而不是符号链接。远程定位使符号链接更具功能,但也提高了它们的安全性,而结点则更安全,因为它们被约束在本地路径上。因此,如果您希望使用本地链接并可以使用绝对路径,那么最好使用路口;否则,请考虑符号链接以了解其附加功能。

在此处输入图片说明

**速度/复杂度差异声明来自Wikipedia条目中有关NTFS重新解析点的未经验证的声明(很好阅读)。*


其他NTFS链接比较

这是关于此主题的其他一些比较,但是在考虑路口时,这些比较可能会误导人,因为它们没有列出我上面列出的好处。

从这里取来(很好的入门读物)

在此处输入图片说明

MKLink的SS64页面

在此处输入图片说明


关于Terminology的评论

交界点是重定点(可以描述为符号链接)

除了前面提到的处理方式上的差异外,NTFS Junctions和NTFS Symbolic链接实际上以相同的方式(重新分配点)执行相同的操作。实际上,从技术上讲,Junction在此词的一般意义上是“符号链接”,有时文档可能将Junction称为符号链接,如此处的情况。在这种情况下,“符号链接”并不意味着NTFS符号链接不同于结(请参阅下文)。

NTFS

即使OP对此进行了指定,也值得指出的是,“符号链接”是一个非常通用的术语,并不特定于NTFS。因此,具体地说,此比较是关于NTFS交汇点与NTFS符号链接的。


交汇点和符号链接都是“重新解析点”,但交汇点绝对不是符号链接!哦,桌子也算错了。交汇点的目标在创建时必须存在,但确实可以在以后删除。
0xC0000022L

3
@ 0xC0000022L是的,如果您要说的是NTFS结点不是NTFS符号链接,那您是对的。我可以看到我的措辞可能会被这样误解。我将进行编辑以阐明这一点,但关键是,在这种情况下,“符号链接”是指NTFS符号链接,它们是Junctions也所属的更通用的“符号链接”概念的特定实现。您是否遵循我发布的链接?这并不是说NTFS交汇点是NTFS符号链接,但是术语“符号链接”可以用来描述交点。
u8it 18-10-22

公平地说,当提到这个概念时,可能是思考它的一种方式。但是我确实认为术语“重新解析点”使这个概念引人注目,因为它解释了NT对象管理器中发生的事情,并且这个概念超出了Unix上的符号链接的范围(例如,它们是普通文件)。带有特殊标志)。是的,我听说过交接点被解释为“目录的符号链接”。
0xC0000022L

@ 0xC0000022L另外,我没有看到您提到的有关表错误的问题。您是在指“可以指向不存在的目标”特征吗?您是否在说至少在第一次创建结点时是错误的?如果您确定在特定环境中可能是这种情况(可能是Windows XP或由于安全设置),我会记录下来,但是根据我的经验和文档(并且我刚刚在Windows 10上已经确认),始终以不存在的路径为目标,即使在创建时也是如此……可能会有安全设置对此加以限制。
u8it 18-10-22

结点不是旧的。它们实现安装点(绑定/卷),而不是符号链接。在开放路径中解析路径时,系统会记住经过的结点,以便评估遍历安装点的相对符号链接。这些遍历需要像对待常规目录一样处理结点,而将符号链接解析为其目标路径。例如,说“ C:\ junction”和“ C:\ symlink”都以“ E:\ spam”为目标,相对符号链接“ E:\ spam \ eggs.txt”以“ .. \ eggs.txt”为目标。然后,“ C:\ junction \ eggs.txt”解析为“ C:\ eggs.txt”,“ C:\ symlink \ eggs.txt”解析为“ E:\ eggs.txt”。
Eryk Sun

35

我发现最适合这些差异的地方:

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



14
公认的答案已经存在三年了,但是我要指出,正如引用的假设所暗示的那样,NFTS交接点不能与Unix中的硬链接相提并论。这很明显,因为连接点不能引用文件,而硬链接可以。NTFS还支持硬链接(与结点不同),或多或少与Unix硬链接相当。

@elgonzo完全同意。AFAIK Unix硬链接只能引用一个文件,因此它看起来根本不像NTFS目录联结。
富兰克林·于

20

在功能上,一旦在Windows中创建,就没有真正的区别。但是,它们之间的区别很大。连接只能用于创建到同一驱动器或不同驱动器上的文件夹的链接,但是仅当这些驱动器位于本地系统上时(您不能通过网络创建到文件夹的连接链接。)符号链接但是,没有相同的限制。符号链接可用于链接到文件或文件夹,并且这些文件或文件夹可以位于同一系统(同一驱动器或不同驱动器)上或网络共享上,并且可以使用相对位置符号(“ \\ system2 “ \ foldera \ file.txt”,“ d:\ foldera \ file.txt”,“ \\ system2 \ foldera”,“ d:\ foldera”或“ d:\ foldera \ folderb ..”。

总结起来:交汇点仅限于本地系统上的文件夹,而符号链接可以创建指向可通过UNC路径或本地系统访问的文件夹或文件的链接,这些文件夹或文件在如何指定这些位置方面更具通用性。基本上,符号链接是交汇点和硬链接的更通用的替代品。另外,在创建跨平台UNC路径链接时,符号链接与Unix和Linux兼容。

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


10

链接外壳扩展程序http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html,是创建和查看多种链接的好工具。它还具有出色的文档。

[在完整安装中,如果您正在查看高级链接,它将添加一个新的属性选项卡。在还会为各种链接类型添加图标叠加箭头-如果这些链接未显示,请滚动至“ FAQ”部分;Windows仅支持13个覆盖层;他显示了一个注册表解决方法。其信息实用性的一个示例:未能尝试获得您认为是文件夹的特权,但实际上是系统提供的Junction Link,通常用于与旧版Windows兼容。

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

然而:

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

如果您将Junction Links看作是“使操作系统迷惑位置的快捷方式”,那么您将对它们的使用以及破坏它们的方法有一个很好的实用的模仿。主要区别在于,如果您复制符号链接或连接,它将复制目标,而不是(如快捷方式)仅复制包含指针的文件。与快捷方式一样,您可以删除符号链接或连结,而无需删除目标文件/文件夹。[硬链接,仅在删除最后一个链接后才删除文件-包括从回收站中删除。在LSE中查看这些链接中的任何一个的属性标签,以查看硬链接的目标或参考计数。]

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

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

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


Link Shell Extension看起来像一个很棒的工具。还有一个名为ln.exe的相关轻量级实用程序...即使您不使用它们,您也可以通过阅读网站的简单用户指南来学到很多东西。
u8it 16-10-14

我想您对2016年4月2日所做的编辑使事情变得不清楚了,克莱。我认为您的意思是这样的:“这些文件与“快捷方式”文件之间的主要区别在于,如果您...复制目标文件,而不仅仅是复制包含指针的文件(复制快捷方式会发生这种情况)文件)”
乔恩·库姆斯

4

符号链接是Windows中最近引入的:从Vista开始。

符号链接不应被视为现有NTFS“解析点”技术的替代方法。

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

MSDN:“ 符号链接旨在帮助与UNIX进行迁移和应用程序兼容性。Microsoft已经实现了其符号链接,使其功能与UNIX链接一样。

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

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


2
这个答案没有说明符号链接和结点之间的区别。(因此,我认为这根本就不适用于此问题)
Billy ONeal,2012年

从Windows Vista开始,符号链接取代了交汇处(众所周知,这两个都是重新解析点)
Aravind

2

除了u8it的出色答案之外:

如果有人对Windows 10 中Windows File Explorer中的行为差异感兴趣:

拖放到目标目录:

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

右键单击+属性:

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

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

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

创建符号链接需要管理员特权,而连接则不需要。
Jinjinov

Windows 10版本10.0.17134.1130:资源管理器中的移动结点仅移动原始目录的内容。在树中左键单击符号链接不会选择原始目录。
SalgoMato
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.