Junction是微软出品的硬链接管理工具,下载之后可以把junction.exe扔到c:\system32文件夹下以方面使用,但是它只能在ntfs格式的文件系统中使用。 查看下载页面
硬链接目前我用不到,但是以后未必用不到,所以先熟悉了一下。现在假设有个软件,它读取和生成的文件都只能储存在c:\test文件夹下,但是由于这个文件夹可能会占用很大的空间,所以我想把这些文件放在D盘。这时候就可以用硬链接来处理(实际上你可以对C:\WINDOWS\Installer这个目录做硬链接处理,如果你够胆大的话。)。
首先,在D盘下建立test文件夹,而在C盘,不需要手动创建test文件夹。之后运行junction工具就可以了:
命令语法是"junction 目标文件夹 源文件夹"。第一次运行junction工具操作时会提示你接受一个协议,同意就行,后面都不会再出现了。
如上图就是创建硬链接成功了。
junction在c盘下会自动创建test文件夹,打开后内容就是d:\test内的内容。硬链接文件夹的图标是快捷方式的图标,但是属性却和快捷方式不同,就像是C盘下普通文件夹一样:
用dir命令可以看到它有着junction属性,也能看到它链接到的目录。
我们向c:\test文件夹内写入一个文件,会发现它同时会出现在d:\test下。
c:\test的属性中会显示它占用的空间大小,但实际上它并不占用C盘空间。我们搜索这两个文件夹中的文件,会发现实际上它只在源文件夹中存在:
在两个文件夹中的任意一个文件夹中对文件进行操作,文件变更都是同步的。这点很好理解。对文件夹进行操作的话,只需要注意源文件夹不要改名或者删除就行了,否则链接就打不开了:
硬链接生成的文件夹可以随意改名。但是有一个要注意的地方是:如果把硬链接生成的文件夹删除,源文件夹不会受到影响。这点和网上一些junction教程中的说法不同,但我自己验证出来是这样的。
其他的一些事项:
同一文件夹位置可以被多处空文件目录连接;
创建硬链接时使用不同的文件夹名字也是可以的,例如下面的例子:
如果想要通过junction来解除链接关系,可以对生成的目录执行命令,例如:junction -d c:\test
mklink工具的话应该会更强大一点,不过快捷方式、符号链接、软连接、硬链接每个都有他们不同的特性,针对源文件复制删除操作的,和链接符号本身的复制移动(可以用XCOPY复制移动),以及绝对路径和相对路径问题,总之比较复杂,不过知道怎么用就好,没必要深究。