MKLINK与Junction.exe


27

SysInternals有一个程序junction.exe,可以在Windows 中创建Junctions(又名reparse points,又名symlinks)。

但是,Windows还附带了一个mklink,它似乎在做同样的事情。

有显着差异吗?

我倾向于认为,如果SysInternals有自己的程序,他们会发现标准MKLink程序存在缺陷。


5
Junction根据链接页面,该文章于2010年9月发布。同样,链接到的页面MKLINK的发布日期为2012年4月。这似乎强烈表明该页面Junction是在将mklink可执行文件添加到Windows 之前创建的。(我没有深入研究每一个最初出现的时间,因此是评论而不是完整的答案。如果有人想对此进行扩展并提出正确的答案,请成为我的客人。)
CVn 2014年

糟糕!我错过了。看起来Junction早于mklink。谢谢。
abelenky 2014年

Answers:


41

比较方式

马克·鲁西诺维奇(Mark Russinovich)的junction程序在设计时就考虑了特定目标:创建(和删除)接合点。多年来一直对其进行维护,但到目前为止尚未添加任何新功能。最新版本于2016年7月4日发布。

至于mklink,它是Windows Vista和更高版本中可用的内置命令。它可以创建硬链接,连接点和符号链接。没有提供特定的删除功能;您可以简单地使用delor rd命令,具体取决于链接分别指向文件还是目录。


一点历史

在Vista之前,Windows操作系统没有提供开箱即用地创建连接点的方法:您要么必须获得一份正式的Resource Kit的副本,要么使用第三方程序,要么自己编写一个。

2000

junction工具的第一个版本已发布。引用官方网站:

Windows 2000及更高版本支持目录符号链接,其中目录充当到计算机上另一个目录的符号链接。[...]

不幸的是,Windows没有提供用于创建结点的工具-您必须购买Win2K资源工具包,该工具与linkd创建结点的程序一起提供。因此,我决定编写自己的结点创建工具:Junction

资料来源:交界处

2005-06

mklink命令是Windows Vista早期Beta阶段引入的。

自2005年7月27日正式发布Beta 1以来,它就已经可用。最初,它只能创建符号链接和硬链接。稍后在2005年12月19日发布的社区技术预览版(CTP)中实现了创建连接点的功能。

显然,该命令直到2006年下半年才被完全忽略。这是我能够找到的最早参考资料:

您现在可以在Windows Vista中创建符号链接。

C:\test>ver

Microsoft Windows [Version 6.0.5365]

C:\test>mklink
Creates a symbolic link.

MKLINK [[/D] | [/H] | [/J]] Link Target

[...]

来源:Windows Vista中的符号链接

也:

马尔科姆[MSFT](专家):
问:是否有一种真正简单的方法来建立符号链接?
答:打开CMD,然后输入“ mklink”。该工具将允许您创建结点,硬链接和符号链接。

来源:NTFS Beta聊天记录(2006年7月12日)


附加信息

文件或目录可以包含一个重新分析点,它是用户定义数据的集合。存储数据的应用程序和文件系统过滤器可以理解此数据的格式,您可以安装文件系统过滤器来解释数据并处理文件。

例如,重解析点用于实现NTFS文件系统链接和Microsoft远程存储服务器(RSS)。

资料来源:重整点数

NTFS文件系统支持三种类型的文件链接:硬链接,联结和符号链接。

资料来源:硬链接和连接点

硬链接

硬链接是文件的文件系统表示形式,通过它多个路径可以引用同一卷中的单个文件。通过该文件的硬链接访问该文件的应用程序可以立即看到对该文件的任何更改。但是,目录条目大小和属性信息仅针对进行更改的链接进行更新。

资料来源:硬链接和连接点

交界处

联结(也称为软链接)与硬链接的不同之处在于,它引用的存储对象是单独的目录,联结可以链接位于同一计算机上不同本地卷上的目录。

资料来源:硬链接和连接点

连接点只能链接到本地​​卷上的目录;不支持远程共享的连接点。

来源:NTFS交汇点

符号链接

符号链接是指向另一个文件系统对象的文件系统对象。指向的对象称为目标。

符号链接对用户是透明的。链接显示为普通文件或目录,并且用户或应用程序可以以完全相同的方式对其进行操作。

来源:符号链接

[符号链接]随Windows Vista对NTFS文件系统的修改而引入,但可通过Windows XP的筛选器驱动程序获得。

NTFS交接点(从Windows 2000开始可用)不同,符号链接也可以指向文件或远程SMB网络路径。尽管NTFS交接点仅支持本地驱动器上的绝对路径,但NTFS符号链接允许使用相对路径进行链接。

Windows Vista / Windows 7中的默认安全设置禁止未提升权限的管理员和所有非管理员创建符号链接。

来源:NTFS符号链接

进一步阅读


如果您要提供比我更详细的答案,则不妨提及NTFS重新解析点
仿人

(请
参阅“

纯品质的答案。
sshow 2014年

2
注意:有“文件”符号链接(mklink无论目标类型如何,均以普通方式制作),并且有“目录”符号链接(以方式制作mklink /d)。最好为目标创建正确的链接类型。
kbolino '16

我很好奇为什么junction.exe在2016年进行了更新,为什么他们继续将其与SysInternals一起发布?他们反对弃权吗?想一想,是的……这些工具中可能有一半在Windows中具有足够的替代品。出色的详细答案。
亚当·普洛彻

2

正如评论中已经提到的,junction.exemklink命令早于Vista / Winserver 2008发行。

因此,在Vista以后的版本中没有必要使用它。无论如何,不​​再支持Windows Vista之前的Windows版本。

而且,junction.exe它不支持随Vista / WinServer 2008和命令一起引入的NTFS符号链接(仅NTFS交叉点mlink

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.