Windows系统中的软链接和硬链接
Linux系统下有一个很好用的命令 ln
,它允许我们为文件在其他目录创建一个同步链接,它就像创建了一个相同的文件,而且不占用存储空间。
这不就是Windows下的快捷方式么……然而并不是。
Windows下常用的快捷方式严格来说是另外一个文件,后缀名为 .lik
,是占用存储空间的,只不过系统处理这个文件时使用了一些有色眼镜,这里就不多赘述了。
那么,有没有一款……
当然是有的,而且Windows自己在C盘偷偷用了好多。
同样,如果我们嫌C盘太挤,也可以自己把相关目录链接到DEF盘里去,但是要注意酌情作死喔。
创建符号链接命令
1 | MKLINK [[/D] | [/H] | [/J]] Link Target |
示例
- 假如我们有这么一个目录
C:\Users\GF47\Documents\A
。
1 | C:\Users\GF47\Documents\A>tree /f |
创建一个新目录
C:\Users\GF47\Documents\B
。为目录
A
中的source.txt
文件和SourceDir
文件夹创建普通的快捷方式,放到目录B
中。同样在目录
B
中为它们创建符号链接。
1 | C:\Users\GF47\Documents\B>mklink _s_source.txt ..\A\source.txt |
- 创建硬链接
1 | C:\Users\GF47\Documents\B>mklink /H _h_source.txt ..\A\source.txt |
文件夹的硬链接是不允许地,因为文件散落在硬盘的不同角落里,硬链接文件夹这种神奇操作……无法想象。
更正:咩咩的文件夹的硬链接居然也是可以的,/J
创建的链接其实就是文件夹的硬链接……
- 结果如下
1 | C:\Users\GF47\Documents\B>dir |
修改
source.txt
[_s_source.txt
][_h_source.txt
] 的任意一个,都会影响其它两个。移动
A
目录中的原始文件和文件夹,B
目录中软链接的_s_source.txt
和_s_Source
失效了,快捷方式则能正确链接到原文件和文件夹上,而且_h_source
也可以正常链接……把原始文件和文件夹移回
A
目录中,所有的链接都恢复正常。删除
A
目录中的原始文件和文件夹,B
目录中除了硬链接的_h_source.txt
之外,全部失效,_h_source.txt
则保持原有内容。
更正:原始文件被删除后,文件的快捷方式并没有失效,居然自动链接到
_h_source.txt
这个硬链接上去了,有点6。看来硬链接是在磁盘上做了什么神奇操作。
- 分析分析
软链接文件和文件夹显然不占空间,硬链接严格来说也不占新空间,它只是原始文件的另外一个入口,而快捷方式都占用新空间,而且大小和原文件文件夹无关。