一个比较好玩的东西——硬链接

今天学到一个比较好玩的东西,就是用mklink命令创建硬链接!

首先,通过百度百科查询知道:

硬链接(hard link, 也称链接)就是一个文件的一个或多个文件名。再说白点,所谓链接无非是把文件名和计算机文件系统使用的节点号链接起来。因此我们可以用多个文件名与同一个文件进行链接,这些文件名可以在同一目录或不同目录。一个文件有几个文件名(用ln命令实现多个文件名),我们就说该文件的链接数为几。由定义可知,此链接数可以是1, 这表明该文件只有一个文件名。
总之,硬链接就是让多个不在或者同在一个目录下的文件,同时能够修改同一个文件,其中一个修改后,所有与其有硬链接的文件都一起修改了。

然后,实践的时候在cmd 输"mklink /?",得到这些东西:

创建符号链接。

MKLINK [[/D] | [/H] | [/J]] Link Target

/D 创建目录符号链接。默认为文件
符号链接。
/H 创建硬链接,而不是符号链接。
/J 创建目录联接。
Link 指定新的符号链接名称。
Target 指定新链接引用的路径
(相对或绝对)。

尤其是可以创建目录的硬链接,让我是相当的兴奋!

有什么用呢?比如说我这样:

mkdsk /h /j d:\Edisk e:\

这样在D盘就有一个叫做Edisk的目录,然后“cd Edisk”也能CD进去了,哈哈,而不是以前那样在D盘创建一个E盘的快捷方式,这个快捷方式其实只是个文件,只能在资源管理器里打开,然后跳到E盘,真的没啥用。

这样的话,我第一个想到的用法就是让快盘的同步制定多个目录,嘿嘿,以前看快盘不顺眼就是因为他只能设定一个同步目录,现在问题解决了,真好!

听说这个硬链接在windows下的NTFS文件系统下可用,在Linux下也可用,不过Linux似乎不能创建目录的硬链接。

这让我想起了以前玩文曲星的时候,折腾文曲星的文件系统。文曲星的文件系统的文件夹其实也可以当做一个文件来打开,打开后发现文件夹存文件的结构式这样的,前两个字节是文件号,然后14字节用来存文件名(文件名长度还是相当少的,扣除4字节用作拓展名,实际只有5个汉字长度)。如果想隐藏一个文件,把这16字节备份然后清除即可,如果想把一个文件放在几个地方,再其他目录都写上这16字节就行,不过删除的时候有点麻烦,毕竟这16字节是无法指定这个文件记录原本的还是后来手工复制的,所以只要一个地方删除了,这个文件号也就没用了,而其他地方也就出现了所谓的“僵尸目录”……

哈哈,不好意思,说到文曲星的问题我就喜欢啰嗦,一不小心就说多了。

回过来,我今天测试了一下这个硬链接,它就没有这样的问题,毕竟是文件系统本身支持的,在资源管理器里能识别出哪个是原始文件哪个是链接,所以删除了硬链接原始文件并不会删除。

我刚才测试了一下,删除硬链接后,无论是文件夹还是文件的硬链接,原始文件都不会删除。

删除原文件后,文件夹硬链接打开时会提示找不到指定路径,而文件硬链接则比较诡异,类似于复制了一个文件,只有把两个文件删除文件才会消失,实际空间只占用了一个。

原文地址:https://www.cnblogs.com/fwindpeak/p/2892714.html