在NTFS上下文中:

MKLINK [[/D] | [/H] | [/J]] Link Target
/D创建目录符号链接。默认是文件符号链接。 /H创建硬链接而不是符号链接。 /J创建目录连接。 Link指定新的符号链接名称。 Target指定新链接引用的路径(相对或绝对)。



目录结点与目录符号链接是否完全相同?
mklink /D f1 f2mklink /J f1 f2有什么区别?


既然“目录”实际上只是一个文件,那么目录符号链接和文件符号链接之间会有什么区别? br />


评论

相关:superuser.com/q/347930/24500

#1 楼

尽管结点的行为类似,但它绝对不是目录符号链接。主要区别在于,如果您正在查看远程服务器,则在服务器上处理联结,而在客户端上处理目录符号链接。另请参阅Matthew对以下事实的评论:这意味着本地文件系统上的符号链接可以指向远程文件系统。

假设在名为Alice的计算机上放置了交点c:\myjp和目录符号链接c:\mysymlink,都指向c:\targetfolder。使用Alice时,您不会发现它们之间有很大的差异。但是,如果您使用的是另一台名为Bob的计算机,则结点

\Alice\c$\myjp将指向\Alice\c$\targetfolder

,但是符号链接

\Alice\c$\mysymlink将指向\Bob\c$\targetfolder

(注意:默认情况下,系统不遵循远程卷上的符号链接,因此在大多数情况下,第二个示例实际上将导致“找不到文件”或“符号链接不能遵循,因为它的类型被禁用。“)

目录符号链接和文件符号链接之间的区别只是一个代表目录,一个代表文件。由于创建链接时链接的目标不需要存在,因此文件系统需要知道是否告诉应用程序它是目录。

还应注意创建符号链接需要特殊特权(默认情况下,仅对提升的进程可用),而创建联结仅需要访问文件系统。

评论


只是要清楚一点:目录结点和目录符号链接之间可能还存在其他微妙的功能差异。从用户(相对于开发人员)的角度来看,远程与本地事物最为明显。

–哈里·约翰斯顿(Harry Johnston)
2011年10月5日,下午4:02

@MatthewSteeples的意思是,如果我创建一个符号链接C:\ testlink(指向我的计算机上的C:\ test),并且有人远程访问我的计算机并单击C:\ testlink,它将解析为C:\在HIS计算机上进行测试,而如果我创建目录结点C:\ testlink(指向我的计算机上的C:\ test),并且有人远程访问我的计算机并单击C:\ testlink,它将导致他进入C :\ test在我的电脑上?还是我弄错了方向?

–起搏器
2011年10月5日在8:19

@Pacerier在这种情况下是的,但是符号链接使您可以在计算机上拥有一个指向网络共享的文件夹(因为它们是客户端解析的)。例如C:\ MyNetworkShare实际上可以指向\\ Alice \ Share

–马修·斯蒂夫斯(Matthew Steeples)
2011年10月6日14:57

@MatthewSteeples,但是我们不能创建目录链接C:\ MyNetworkShare,它也指向\\ Alice \ Share吗?

–起搏器
2011年10月7日10:44

@Pacerier,不,连接点必须是本地的。

–哈里·约翰斯顿(Harry Johnston)
2011年10月8日,0:05

#2 楼

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



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


其他NTFS链接比较

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

来自这里(入门读物)



从MKLink的SS64页面开始




关于术语的评论

结点是符号链接

结点和符号链接实际上是以相同的方式做同样的事情(重切点) ),除了上述处理方式上的差异。实际上,从技术上讲,Junction是符号链接,有时文档可能将Junction称为符号链接,如此处的情况。因此,关于术语这只是要注意的事情。

NTFS

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

评论


有人测试过“连接”与“符号链接”的处理速度吗?

– 1000Gbps
'18 Sep 1'在13:59

优点/缺点图表非常有用,谢谢!

–GordonM
18-09-20在15:52

#3 楼

复杂的谈话会伤害大脑-我喜欢图表:

假设任何MyLink是符号链接,任何MyJunc是指向Target as created的结点。

例如

mklink /D MyLink C:\T_Dir用于创建到目标目录的符号链接

mklink /J MyJunc C:\T_Dir用于创建到目标目录的目录连接

语法为mklink [/J,/D] [link path] [target path],在本地计算机上键入


 link path    |   target path   |         When accessed ..
              |                 |  (locally)    |    (remotely)
              |                 |               |
C:\MyLink     |   C:\T_Dir      |  C:\T_Dir     |  [leads back to local]
C:\MyJunc     |   C:\T_Dir      |  C:\T_Dir     |  [leads to remote]
              |                 |
\Svr\MyLink  |   C:\T_Dir      |   C:\T_Dir    |  [leads back to local]
\Svr\MyJunc  |   C:\T_Dir      |  *** Must create and point local ***
              |                 |
C:\MyLink     |  \Sv2\T_Dir    |  \Sv2\T_Dir  |   Error*1
C:\MyJunc     |  \Sv2\T_Dir    |  *** Error - Must point local ***
              |                 |
\Svr\MyLink  |  \Sv2\T_Dir    |  Error*1
\Svr\MyJunc  |  \Sv2\T_Dir    |  *** Must create link using target device ***


错误* 1-如果您取消阻止访问本地计算机上的远程符号链接,则此方法将起作用..但仅在不受阻止的本地计算机上

评论


太奇怪了甚至相对的符号链接也无法远程工作。例如。我创建目录d:\ _ tmp \ data。像这样创建链接:d:\ _ tmp> mklink / d数据链接数据。远程用户拥有对d:\ _ tmp及其所有子文件夹的完全访问权限,但他仍将无法打开d:\ _ tmp \ data-link。

– Nux
16年8月19日在11:18



这是因为当符号链接在客户端得到评估时,它将指向客户端而不是服务器上的d:\ _ tmp \ data。

–推荐人
16-09-24在12:13



我认为它很奇怪的原因很明显。但我同意@Nux的看法,至少在相对符号链接的情况下,这很奇怪。

–琼·库姆斯
17年3月21日在22:36

复杂的谈话会伤害大脑-我喜欢图表,我也喜欢这句话,图表也是如此。

–卢克
19年6月24日在1:08