也说symbol link和junction的区别
展开全部
Windows里可以用mdlink来创建硬连接hard link,符号连接symbol link和节点junciton。硬连接最好理解,对应于磁盘内存储的文件,文件目录上多生成一个指针。所以是多对一的关系。比较有趣的是,据说删除一个有多个hard link的文件的任何一个hard link,并不影响一个实际的文件,其它hard lin还可以访问到这个文件。只有最后一个hard link被删除后,文件才真的被删除了。
比较难理解的是symbol link和junction,symbol link对应目录的时候mdlink命令使用/d参数,生成junction要使用/j参数。symbol link比较象快捷方式,访问这个symbol link时,实际访问的是这个快捷方式。那么在远程访问时就有意思了。因为如果symbol link在建立时,是在本机建立的指向本机位置的使用本地路径信息的symbol link,那么在远程访问的时候,有可能会出现访问失败。比如:
mdlink /d d:\share\content c:\content
net share share=d:\share /grant:everyone,FULL
那么在远程访问\\netshare\share\content的时候,可能会访问到访问者本地的c:\content,因为symbol link是一个指向c:\content的快捷方式。
还有一个问题,访问一个符号连接的时候,会受到本地符号访问规则的限制。对应的命令是:
fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
L是本地,R是远程,1是允许,0是禁止,Windows 7默认值是L2L:1 R2R:0 L2R:1 R2L:0
而如果违反这些访问设定,则会遇到一个报错:
The symbolic link cannot be followed because its type is disabled.
但是junction就不会,junction更像一个hard link,但它对应的是一个目录,而不是一个文件。另一方面,微软好像不再推进junction的使用,虽然在操作系统里,微软自己还在广泛使用junction来关联老的系统目录结构和新目录结构。
所以,结论是,如果一个目录可能要进行远程访问的话,使用junction是更好的选择。
比较难理解的是symbol link和junction,symbol link对应目录的时候mdlink命令使用/d参数,生成junction要使用/j参数。symbol link比较象快捷方式,访问这个symbol link时,实际访问的是这个快捷方式。那么在远程访问时就有意思了。因为如果symbol link在建立时,是在本机建立的指向本机位置的使用本地路径信息的symbol link,那么在远程访问的时候,有可能会出现访问失败。比如:
mdlink /d d:\share\content c:\content
net share share=d:\share /grant:everyone,FULL
那么在远程访问\\netshare\share\content的时候,可能会访问到访问者本地的c:\content,因为symbol link是一个指向c:\content的快捷方式。
还有一个问题,访问一个符号连接的时候,会受到本地符号访问规则的限制。对应的命令是:
fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
L是本地,R是远程,1是允许,0是禁止,Windows 7默认值是L2L:1 R2R:0 L2R:1 R2L:0
而如果违反这些访问设定,则会遇到一个报错:
The symbolic link cannot be followed because its type is disabled.
但是junction就不会,junction更像一个hard link,但它对应的是一个目录,而不是一个文件。另一方面,微软好像不再推进junction的使用,虽然在操作系统里,微软自己还在广泛使用junction来关联老的系统目录结构和新目录结构。
所以,结论是,如果一个目录可能要进行远程访问的话,使用junction是更好的选择。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询