好用的符号链接mklink
初识符号链接
符号链接。Linux下的符号链接相信有不少小伙伴都比熟悉了,然而Windows上的符号链接就很少被提起了,像小编也是最近才知道。Windows系统上的符号链接全称为「NTFS符号链接」,是NTFS文件系统中指向文件系统中的另一个对象的一类对象,被指向的对象叫做"目标"。
符号链接的设计目的是为了增强兼容性的,首次出现在Windows Vista,较晚的更新时间加之当时已经有「快捷方式」的存在,所以也不太为用户所知。符号链接简单来说原理就像快捷方式一样,只不过快捷方式只能在Windows资源管理器中才识别为目录或文件,在其他系统和程序看来只是一个.link文件,而符号链接在系统中同样不占用空间,但却能被其他文件系统和程序识别并进行修改,对代理的改动就和修改目标文件(源文件)一样。
简单了解原理之后,想必大家已经想到不少利用符号链接来实现的功能了吧?小编最开始就是因为微软自带的IIS管理器无法映射驱动根目录作为虚拟目录,在网上进行了一番冲浪才发现这样一个「骚操作」,将需要映射的盘全都在WebDAV共享文件夹中创建了符号链接,解决了现实需求。
符号链接的具体实现方法是用命令提示符CMD中的mklink命令实现的(管理员模式运行),PowerShell中要先敲cmd进入cmd之后再使用mklink命令。现在我来一步步教大家怎样使用mklink命令创建符号链接:首先在在菜单界面搜索「CMD」,右键以管理员身份运行,这样就以管理员身份启动CMD了。
在mklink的帮助界面可以看到实际上可以创建三种类型的符号链接,下面小编来简单解释一下不同符号链接类型之间的区别。
/d目录符号链接:常用类型,可以为目录或文件创建符号链接;
/j目录联结:常用类型,为目录创建符号链接,像Win10的「开始菜单」、「我的文档等」就是目录链接;
/h硬链接:链接对象只能为文件且不能跨卷。
一般来说/h硬链接因为不能跨卷建立所以使用的比较少,不过它的特性却很适合将文件进行备份和避免误操作,硬
链接本质就是创建一个「入口」,删除一个文件只相当于删除了这个文件的其中一个「入口」,只有将两个文件同时删除才会真正在硬盘上删除。
/d目录符号链接和/j目录联结虽然本质上有区别,但在实际使用中最大的不同就是,目录联结只支持文件夹且不支持网络远程地址的引用,其他使用上基本可以等同。
给C盘搬家
说了这么多还是来解决一下实际问题-咱们来帮C盘搬搬家。在windows下,大多数软件会默认安装在C盘,即使自定义安装路径把软件安装到其他盘,还是会有很多软件用到的数据文件被塞到C盘,虽然可以利用软件或者到注册表修改默认安装路径以及数据存储路径,然而操作比较繁琐还怕引起软件稳定性问题。
小编的C盘就划了100G的空间,虽然也不少了,而且平时也很注意不往C盘装软件,但是Win10系统自动在C盘设置了虚拟内存,加上各种默认安装路径的软件和缓存,C盘剩下的空间就非常有限了,这时候除了清理垃圾之外还可以通过符号链接把C盘的文件搬到其他盘。
比如我想把默认安装到C盘的potpalyer转移到D盘里,而不影响桌面的快捷方式和正常运行。首先我们先找到PotPlayer的安装文件夹C:\Program Files\DAUM,然后把整个DAUM文件夹剪切到D盘(如果担心数据丢失可以先复制备份),此时C:\Program Files里就没有DAUM文件夹了(很重要)。
接着打开CMD开始输入符号链接命令:mklink /d "C:\Program Files\DAUM" "D:\Program Files\DAUM"(利用mklink /
j命令创建目录联结效果一样),然后回车,显示为C:\Program Files\DAUM <<===>> D:\Program Files\DAUM 创建的符号链接,这样就成功在C盘Program Files目录下创建了一个名为「DAUM」的符号链接了。
现在我们再打开C:\Program Files文件夹就能看到出现了一个带快捷方式符号的DAUM文件夹,不过不用担心这是一个符号链接而不是快捷方式,PotPlyer播放器仍然能正常的通过桌面快捷方式打开和使用,通过视频文件对播放器的调用也没有受到影响。打开文件夹的属性面板也可以看到DAUM此时是一个符号链接。
眼尖的小伙伴可能已经看到了,除了PotPlyer之外小编还利用符号链接把Adobe的默认安装文件夹也搬到D盘去了,这下又节省了6G的C盘空间,其他软件也同理。除了帮软件搬家之外,其他像一些默认在C盘的缓存文件夹,甚至是一些分国内、国际服的游戏都可以通过符号链接整合到一起,达到瘦身的目的,这就属于比较骚的操作了,我们以后可以单独来讲。
LinkShellExtension
毕竟使用mklink命令来建立符号链接需要自己手动敲,对不太熟悉命令提示符的小伙伴来说还是挺麻烦的,光是搞明白建立链接地址和目标路径命令的顺序可能就要死掉不少脑细胞,用批处理文件也不是太方便。于是小编又冲浪了一会,终于发现了一款能简单快速建立符号链接的软件:LinkShellExtension。
大家只需要在百度上搜索这款软件的名字,第一个就是它的官网了,点击Download就能下载,下载好之后语言选择中文接着就安装完成了。安装完成之后,LinkShellExtension的所有功能就集成在了右键菜单里。如果想为某个文件或者文件夹建立符号链接,只需要再资源管理器中选中目标右键「选择源连接点」,然后再打开到想要建立符号链接的位置,再空白处右击「创建为」>>「符号链接」,就成功在相应位置建立符号链接了。目录联结和硬链接的创建的操作方法也相同。
评论区的小伙伴还知道哪些符号链接的神奇用法呢?
1.mklink命令
格式:MKLINK [[/D] | [/H] | [/J]] 链接名称 目标
语法介绍:
win+r-->cmd
-->输入mklink
命令区别:
/d 给目录创建符号链接,简称符号链接、软链接;
/h 创建硬链接,简称硬链接;
/j 给目录创建联接点,简称软链接。
当没有上面3个命令符时,创建是文件软链接!文件类型:.symlink
注意:
路径,建议使用绝对路径,必须使用英文双引号将路径括起来;
空格,命令之间必须有空格
mklink "d:/test.png" "F:\Blog\WebProject\servlet实现文件上传,预览,下载和删除\demo_uploadAndDownload\WebContent\uploadTest\qq_2982586911.png"
2.符号链接、目录链接、硬链接与快捷方式
3.证实目录链接没有占用空间
第一步:创建目录链接
第二步:查看test目录大小
第三步:分析
很明显,大小为7个G,这个地方很具有迷惑性,但是到底有没有占用D盘的空间呢?
目录链接创建前后,D盘空间未发生变化
第四步:结论
经测试,并没有占用D盘空间!
4.证实目录链接只是对源目录的引用
第一步:创建目录链接
还用上面的目录链接
第二步:测试(使用硬链接)
测试一:
将D:\test[ReinForce] Yosuga no Sora (BDRip 1920x1080 x264 FLAC)[ReinForce] Yosuga no Sora - Akira arc 02 (BDRip 1920x1080 x264 FLAC).mkv链接到e:\test.mkv
命令:
mklink /h "e:/test.mkv" "D:\test\[ReinForce] Yosuga no Sora (BDRip 1920x1080 x264 FLAC)\[ReinForce] Yosuga no Sora - Akira arc 02 (BDRip 1920x1080 x264 FLAC).mkv"
硬链接创建失败:
测试二:
将D:\test[ReinForce] Yosuga no Sora (BDRip 1920x1080 x264 FLAC)[ReinForce] Yosuga no Sora - Akira arc 02 (BDRip 1920x1080 x264 FLAC).mkv链接到f:\test.mkv
命令:
mklink /h "f:/test.mkv" "D:\test\[ReinForce] Yosuga no Sora (BDRip 1920x1080 x264 FLAC)\[ReinForce] Yosuga no Sora - Akira arc 02 (BDRip 1920x1080 x264 FLAC).mkv"
硬链接创建成功:
第三步:结论
由上面的测试,可以证实:目录链接只是对源目录的引用(指向)