在NTFS的背景下。
MKLINK [[/D] | [/H] | [/J]]链接目标
/D
创建一个目录符号链接。 默认是文件符号链接。
/H
创建一个硬链接而不是符号链接。
/J
创建一个目录结点。
Link
指定新的符号链接名称。
Target
指定新链接指向的路径(相对或绝对)。
1.1.目录连接与目录符号链接不是完全一样吗?
mklink /D f1 f2
和mklink /J f1 f2
之间有什么区别?
1.既然"目录"实际上只是一个文件,那么目录符号链接和文件符号链接的区别是什么?
结点与目录符号链接绝对不是一回事,尽管它们的行为类似。 主要区别在于,如果你看的是一个远程服务器,结点是在服务器上处理的,而目录符号链接是在客户端处理的。 也请看Matthew的评论,这意味着本地文件系统的符号链接可以指向远程文件系统。
假设在一台名为Alice的机器上,你放置了一个结点c:\myjp
和一个目录符号链接c:\mysymlink
,都指向c:\targetfolder
。 当你使用Alice时,你不会注意到它们之间有多大区别。 但如果你使用另一台名为Bob的机器,那么连接点
`Alice\c$myjp
将指向``Alice\c$targetfolder
。
但符号链接
Alice\c$mysymlink
将指向Bobc$targetfolder
。
(注意:默认情况下,系统不会跟踪远程卷上的符号链接,所以在大多数情况下,第二个例子实际上会导致"文件未找到"或"符号链接不能被跟踪,因为它的类型被禁用了")
目录符号链接和文件符号链接的区别只是一个代表目录,一个代表文件。 由于在创建链接时,链接的目标不需要存在,文件系统需要知道是否告诉应用程序它是一个目录或不是。
还应注意的是,创建符号链接需要特殊的权限(默认情况下,只有高等级进程才有),而创建结点只需要访问文件系统。
复杂的谈话会伤害大脑 -- 我喜欢图表。
假设任何MyLink
是一个符号链接,任何MyJunc
是一个指向Target as created
的连接点。
例如:
mklink /D MyLink C:\T_Dir
用于创建一个指向目标目录的符号链接
mklink /J MyJunc C:\T_Dir
用于创建一个到目标目录的目录结点。
语法为:"mklink [/J,/D] [链接路径] [目标路径]",如在本地机器上输入的。
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 - 如果你在本地机器上取消了对远程符号链接的访问,那么这将会起作用......但只是在未被禁止的本地机器上。
符号链接有更多的功能,而结点由于其局限性,几乎看起来是一个遗留的功能,但这些局限性的安全影响是结点可能优于符号链接的具体原因。远程定位使符号链接的功能更多,但也提高了它们的安全状况,而结点可能被认为更安全,因为它们被限制在本地路径上。因此,如果你想要一个本地链接,并且可以接受绝对路径,你可能最好使用结点;否则,考虑使用符号链接以增加其能力。
*关于速度/复杂性差异的说法来自于维基百科关于NTFS reparse points的条目(一个好的读物)中一个未经证实的说法。
其他NTFS链接的比较
这里有一些关于这个主题的其他比较,但在考虑结点时,这些可能会产生误导,因为它们没有列出我上面列出的好处。
摘自这里(一个很好的介绍性阅读)。
关于术语的评论
函数是象征性的链接。
结点和符号链接实际上是以同样的方式做同样的事情(reparse points),除了前面提到的处理方式不同之外。事实上,从技术上讲,结点就是一个符号链接,有时文档可能会把结点称为符号链接,如这里的情况。所以,这只是一些需要注意的术语。
NTFS
尽管OP指定了这一点,但值得指出的是,"符号链接"是一个非常普遍的术语,并不专门针对NTFS。所以,具体来说,这个比较是关于NTFS结点与NTFS符号链接的比较。