Windows中4种链接类型总结
仅供参考,若有不足之处请大家指正
ShortCut(快捷方式)
-
以
.lnk
文件方式存在; -
适用于
文件
和文件夹
; -
只能使用
绝对路径
; -
可以
跨盘符
、跨主机
; -
ShortCut本身会占用一点空间;
-
ShortCut为文件夹时,访问的时候,是直接访问Target;
-
任何一边重命名后,链接关系依然存在;
-
删除ShortCut,不影响Target;
-
删除Target,ShortCut依然存在,但不可用;
如果Target还在回收站中,访问ShortCut时按R
可以将其还原并打开,按D
可以删除ShortCut。 -
创建:
- 复制Target -> 选择合适的地方 -> 右键菜单选择“粘贴为快捷方式(S)”;
- 选择Target -> 右击 -> 在弹出的菜单中选择“发送到 -> 桌面快捷方式”;
- 选择合适的地方 -> Right Click -> W -> S;
-
查看:
dir | findstr .lnk$
SymbolicLink(符号链接)
注意:符号链接不是软链接,是一种超级ShortCut。
-
以
.symlink
和.symlinkd
文件方式存在; -
适用于
文件
和文件夹
; -
可以使用
相对路径
和绝对路径
;
注意:使用相对路径创建SymbolicLink时,相对路径不会转为绝对路径,是真正的相对路径。 -
可以
跨盘符
、跨主机
; -
SymbolicLink本身不占用空间;
-
Target重命名后,链接关系断开;(再改回来,重新建立关系)
-
访问Symlinkd时,不是直接访问Target,而是Symlinkd本身;
所以,有一个快捷操作,Right Click -> I,不生效。 -
删除Symlink和Symlinkd,不影响Target;
-
删除Target,Symlink和Symlinkd依然存在,但不可用;
如果Target还在回收站中,访问Symlink时,没有任何效果,访问Symlinkd时,会提示你Target不存在了。 -
创建:
创建文件符号链接: mklink "file symbolic link name" "target file" 创建目录符号链接: mklink /D "directory symbolic link name" "target directory"
-
查看:
dir /a:l
HardLink(硬链接)
-
只用于
文件
; -
只能使用
绝对路径
; -
不能
跨盘符
,也不能跨主机
; -
HardLink不占用空间;
对一个文件创建HardLink,这个链接是在文件系统层面上对Target的一个映射。
-
当HardLink建立后,硬链接双方任何一边被修改,都会造成对应的链接对象被修改;
- 任何一边重命名,不会删除链接关系;
- 任何一边被移动到其他盘符后,删除链接关系,再移回来,关系也不存在了;
- 在同一盘符下,任何一边被移动到其他位置,不会删除链接关系;
- 在同一盘符下,任何一边对内容的修改,另一边会同步;
- 在同一盘符下,任何一边被删除、还原后会同步另一边的内容;
- 删除HardLink,不影响Target;
- 删除Target,不影响HardLink;
-
创建:
1. mklink /H "hard link name" "target file" 2. fsutil hardlink create "hard link name" "target file"
-
查看:
fsutil hardlink list 是枚举该文件上的硬链接 1. fsutil hardlink list "hard link name" 2. fsutil hardlink list "target file"
-
应用:
在同一主机以及同一盘符下,备份文件的时候,不需要进行多重的拷贝,只需要维护硬链接关系。
SoftLink(软链接)
软链接有很多名字,Junction Point, Soft Link, Reparse Point
-
只用于
文件夹
; -
只能使用
绝对路径
;注意:创建时,如果使用相对路径,最后存储时,相对路径会转为绝对路径。
-
可以
跨盘符
,但不能跨主机
; -
SoftLink本身不占用空间;
-
访问SoftLink时,不是直接访问Target,而是SoftLink本身;
所以,有一个快捷操作,Right Click -> I,不生效。 -
Target重命名后,链接关系断开;(再改回来,重新建立链接关系)
-
SoftLink重命名后,链接关系依然存在;
-
删除SoftLink,不影响Target;
-
删除Target,不影响SoftLink,但不可用;
访问SoftLink时,会提示你Target不存在了。
-
创建:
1. mklink /J "junction point name" "target directory"
-
查看:
查看该目录下有哪些目录是SoftLink dir /a:l 查询该SoftLink相关信息(比如,可以查看Target) fsutil reparsepoint query "junction point name"
-
解除分析点
断开与SoftLink的关系以及解除分析点(也就会转成普通的目录DIR) fsutil reparsepoint delete "junction point name"