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

Bil*_*eal 126 windows symlink ntfs

在较高的层面上,NTFS连接点符号链接之间唯一明显的区别是,连接只能是目录,而允许SymLinks也是目标文件.

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

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

u8i*_*8it 73

我的印象是,由于遗留原因,交叉点就在附近,而且符号链接总体上更好(事情看起来就像这样).事实证明,这并不完全正确.使用交叉点而不是符号链接有一些很好的理由.主要区别在于安全性和远程与本地路径.是的,远程定位使符号链接更具功能性,但也会提高其安全性.所以,如果你想要一个本地链接并且可以使用绝对路径,那么你可能会更好地使用一个交叉点; 否则,请考虑添加其功能的符号链接.

在此输入图像描述

**速度/复杂性差异的陈述来自维基百科条目中关于NTFS重新分析点的未经证实的陈述(很好的阅读).*


其他NTFS链接比较

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

取自这里(一个很好的介绍性阅读)

在此输入图像描述

MKLink上的SS64页面

在此输入图像描述


关于术语的评论

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

NTFS Junctions和NTFS符号链接实际上以相同的方式(重新分析点)执行相同的操作,除了上述处理方式的差异.实际上,从技术上讲,Junction是一般意义上的"符号链接",有时文档可能将Junction称为符号链接,就像这里的情况一样.在这种情况下,"符号链接"并不意味着NTFS符号链接与结点不同(见下文).

NTFS

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

  • @ 0xC0000022L是的,如果您说的是NTFS Junction不是NTFS符号链接,那么你是对的.我可以看到我的措辞可能会被误解为这样说.我将编辑澄清,但重点是,在此上下文中,"符号链接"是指NTFS符号链接,它是Junction也属于的更一般的"符号链接"思想的特定实现.你按照我发布的链接了吗?这并不是说NTFS Junction是NTFS符号链接,但术语"符号链接"可用于描述结点. (3认同)
  • 连接点不是遗产。它们实现安装点(绑定/卷),而不是符号链接。当以开放方式解析路径时,系统会记住遍历的连接点,以便评估遍历安装点的相对符号链接。这些遍历需要像处理常规目录一样处理连接,而符号链接则被解析为其目标路径。例如,假设“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”。 (3认同)

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

  • 已接受的答案已经有三年了,但我想指出NFTS交接点与Unix中的硬链接不相符,如引用的假设所暗示的那样.这应该是显而易见的,因为连接点不能引用文件而是硬链接.NTFS还支持硬链接(与结点不同),这些硬链接或多或少与Unix硬链接相当. (14认同)

Tec*_*ard 18

从功能上讲,在Windows中,一旦创建,就没有真正的区别.但是,它们之间存在显着差异.连接只能用于创建指向同一驱动器或不同驱动器的文件夹的链接,但前提是这些驱动器位于本地系统上(您无法通过网络创建指向文件夹的连接链接.)符号链接但是,没有相同的限制.符号链接可以被用来链接到任何文件或文件夹可位于同一系统上(同一驱动器或不同的驱动器)的文件或文件夹或网络共享,并可以利用相对位置符号处理的("\\系统2\foldera\file.txt的", "d:\ foldera\file.txt的", "\\系统2\foldera", "d:\ foldera" 或 "d:\ foldera\FolderB中.." 与所得到的链路的最后2个例子是相同的位置)相对位置符号处理就可以了,'.."电流驱动相对函数(如果当前的驱动器是C :,则指定'\ TEMPA\FolderB中’resultsin一个链接到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的一些特定于备份的功能非常有用 - 简而言之,它可以在标准文件夹中创建几种类型的可更新符号链接结构,以用于挂起备份目的.


Jin*_*nov 7

除了来自 u8it 的优秀回答:

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

拖放至目标目录:

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

鼠标右键+属性:

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

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

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

  • 这是非常有价值的见解,尤其是**连接:将原始目录移动到目标目录**部分。我曾经尝试移动(Ctrl+X,V)一个连接点一次,认为它只会移动一个**指针**对象,但它实际上删除/更改了我原来的目录! (4认同)

小智 5

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

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

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

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

Vista 还是第一个将链接用于其自身功能的操作系统。为了与旧文件夹名称兼容,C:\Documents and Settings现在是指向C:\Users.

有趣的是,虽然Vista 引入了Symbolic links,但这个“ Documents and Settings” 把戏其实是一个普通的老式连接器。

  • 这个答案没有说明符号链接和连接点之间的区别。(因此,我认为它根本不适用于这个问题) (2认同)