前言
很久以前就知道windows中这么一种快捷方式,不同于普通的快捷方式,是一种可以和源文件发挥相同功效作用的“快捷方式”,但是一直未深入探索使用过,现在想起来或许这种快捷方式可以为我们的工作带来很大便利。
部分参考资料:
mklink_百度百科
Windows硬链接 软链接 符号链接 快捷方式
Windows上创建符号链接的完整指南
Windows下mklink使用, 硬链接, 软链接和快捷方式的区别
windows mklink /d /h /j 精讲
Vista下类型为JUNCTION和SYMLINK的文件夹有什么区别
实践
看完许多资料,还是对windows下的mklink命令感到有些迷惑,我觉得还是自己实践下比较好。
mklink一共只有3种链接,针对3种方式我分别对文件和文件夹进行如下实验。
文件测试
mklink /d D:\d.txt C:\Users\ZXIN\Desktop\src.txt
mklink /h D:\h.txt C:\Users\ZXIN\Desktop\src.txt
mklink /h C:\Users\ZXIN\Desktop\opencv\h.txt C:\Users\ZXIN\Desktop\src.txt
mklink /j D:\j.txt C:\Users\ZXIN\Desktop\src.txt
文件夹测试
mklink /d D:\d C:\Users\ZXIN\Desktop\src
mklink /h D:\h C:\Users\ZXIN\Desktop\src
mklink /h C:\Users\ZXIN\Desktop\opencv\h C:\Users\ZXIN\Desktop\src
mklink /j D:\j C:\Users\ZXIN\Desktop\src
占用空间测试
mklink /d D:\bigd "G:\ONE PIECE\820-866"
mklink /d G:\bigd "G:\ONE PIECE\820-866"
mklink /h G:\bigh.zip "G:\NPUBits\偷星九月天.zip"
mklink /j D:\bigj "G:\ONE PIECE\820-866"
mklink /j G:\bigj "G:\ONE PIECE\820-866"
以下是实验结果:
项目 | 符号链接 | 硬链接 | 目录链接 |
---|---|---|---|
参数 | /D | /H | /J |
管理员权限 | 需要 | 不需要 | 不需要 |
文件 | 不支持 | 支持 | 不支持 |
文件夹 | 支持 | 不支持 | 支持 |
空间 | 不占用 | 不占用(理应占用) | 不占用 |
跨磁盘 | 可以 | 不可以 | 可以 |
删除或移动源文件(夹) | 无法访问 | 存在 | 无法访问 |
移动链接 | 秒移,整个文件夹被移动 | 秒移 | 跨盘的话会发生复制行为,原地遗留一个空文件夹 |
和网上的图进行比较:
奇怪的地方来了,在我测试中三种方式都是不占用空间的,硬链接应该是会占用空间的才对,我检查占用空间的方式是右键磁盘查看可用空间,但是三种方式都不改变磁盘剩余空间,右键查看文件的占用空间三种方式也都是一样的,可能这种查看方式并不科学。
总结
- 与其叫快捷方式,其实这三种方式更像是文件共享,共同点都是文件的改动都是同步的,但是链接文件或目录的删除不影响源文件。
- 至于区别首先就是硬链接源文件的删除不影响链接文件,但是硬链接只能链接文件不能链接文件夹,而另两种方式只能链接文件夹,所以硬链接很适合备份数据。
- 如果什么参数都不加,创建的是文件符号链接。
- 另两种文件链接方式似乎没有什么大差别,/D需要管理员权限,在移动链接文件夹时是整体移动的,不会留下一个空文件夹。需要注意的是虽然删除目录链接的目录本身不会影响源文件,但是删除删除目录下的文件会导致同步删除。
应用
- 除了用硬链接备份数据外,因为这种创建链接的方式几乎是瞬间完成的,可以和OneDrive云盘配合使用,也可用作程序间的数据共享。
- 一个有意思的技巧,如果想使硬链接跨盘符使用该怎么办?可以使用软连接和硬链接相结合的方式,即在一个可以跨盘连接的软链接里创建硬链接,这样硬链接就会同步到另一个盘里。
- 另外如果每次都用命令行的方式进行操作未免太过极客了,刚好在参考文件里找到一个软件,直接将该功能集成到右键菜单里了,我觉得很赞。
软件下载地址:http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html
后记
这个up在视频里讲解了硬链接,本文有些错误懒得改了,建议结合视频观看理解
https://www.bilibili.com/video/BV11b4y1t72B