在Windows下创建硬连接在LINUX、UNIX下面创建硬连接已经“司空见惯”了(上面提到的是Linux里面的命令),这里说的是怎么在Windows下面创建硬连接。Windows XPXP 也有硬连接?没错!不过,先声明,这个仅仅是NTFS才有的。另外要注意的是,硬连接不能跨卷的,简单的说就是不能在C盘给D盘的文件创建硬连接。
XP下面也有硬连接,只是知道的人不多(个人觉得是因为没有UI,所以知道的人少,但在win7里面被认为是“新功能”,那是因为WinSxS文件夹中的文件应用了硬连接技术,而让“硬连接”这一名词在Win7中名声大噪。搜索“Win7 硬连接”,大半的结果是说这件事的),所以应用也不广泛。
创建方法
fsutil hardlink create <新文件名> <现有文件名>
比如:
fsutil hardlink create C:硬连接.txt C:原文件.txt
这样C:原文件.txt就多了一个“别名”:硬连接.txt。
另外,fsutil还有其它很有用的功能,比如,改短名,详细自己输入fsutil慢慢看。
上面说的是为文件创建硬连接,能不能给文件夹创建硬连接呢?可以用一个工具——junction.exe,可以用来创建文件夹硬连接,这个可以跨分区——你是否产生了“把D:TEST 指向 C: ,然后再用 fsutil hardlink create D:est.ini D:TESToot.ini 这个命令来创建跨分区文件硬连接”的想法呢?我试了,失败,输出结果如下(因为我的junction刚下载,是一个压缩包,就用WinMount虚拟成一个盘了。粗体字是系统输出的,其中包含网址的那行删掉了):
Z:>junction.exe d:est c:
Junction v1.05 - Windows junction creator and reparse point viewer
Created: d:est
Targetted at: c:
Z:>fsutil hardlink create d:est.exe d:estoot.ini
新链接和现有文件必须在同一个卷上。
junction命令还可以把空文件夹删除掉:
D:>md TestJunctionDir
D:>junction TestJunctionDir /d
Deleted TestJunctionDir.
如果用于非空文件夹就会出错:
C:Tempest>md TestJunctionDir
C:Tempest>dir > TestJunctionDirest.txt
C:Tempest>junction TestJunctionDir /d
Junction v1.05 - Windows junction creator and reparse point viewer
Copyright (C) 2000-2007 Mark Russinovich
Systems Internals
Error deleting TestJunctionDir: ???????
【注意事项】
使用junction做文件夹连接需要注意的是:不能直接在资源管理器里面删除文件夹的连接,要用下面的命令来删除,否则源文件夹里面的内容也会被删除,切记切记。
junction 文件夹连接名 /dVista、Windows 7在Vista和Win7下面,命令简化了,是mklink,功能比XP中的fsutil强了很多。
MKLINK [[/D] | [/H] | [/J]] Link Target
/D 创建目录符号链接。默认为文件符号链接。
/H 创建硬链接,而不是符号链接。
/J 创建目录联接。
Link 指定新的符号链接名称。
Target 指定新链接引用的路径
至于Windows 2000就不清楚了,不过硬连接是NTFS的特性,如果没有fsutil程序,从XP中复制一个过去应该也是可以的。
相关工具Link Shell Extension上面介绍的是命令行,有没有更方便的办法呢?当然,大家用过右键拖动文件吗?用右键拖动文件,会有“复制文件、移动文件、创建快捷方式”等菜单项,要是有“创建硬连接”该多好啊!抱着这种想法搜索了一下,找到了个好东西:Link Shell Extension
这个软件支持多种语言,其中就包括中文。安装了这个软件之后,文件或文件夹右键菜单就多了一项“选择源连接点”——类似常用的“复制”命令,选择连接点之后,就可以在空白地方点击右键,再选择“创建连接点”。
也可以用右键拖动文件或文件夹来创建连接点,非常方便。
如果选择的是文件夹,则有三个选项:目录连接点、硬连接副本、智能副本。这三者的区别如下:
目录连接点就是上面介绍的junction,不过改进了不少——不会发生上面说的删除连接点而导致删除文件的悲剧了。
硬连接副本

就是复制一个文件夹结构,并创建所有文件的硬连接
智能副本

就是创建一个副本,和普通的复制不同的是,“智能副本”把文件夹内部的硬连接关系也复制了。命令行工具Ln功能跟上面的LSE是一样的,具体使用方法请看其官方网站。查找重复文件的命令行工具DupemergeDupemerge可以查找硬盘上的重复文件,并为其创建硬连接,以达到节省空间的目的。
需要注意的是,不要将一些软件中“雷同的”——通常是零字节——配置文件也弄成硬连接了。
连接的应用共用文件,无需复制如果你有几个版本的Eclipse的话,用硬连接来共享插件,那就可以省下很多硬盘空间了。
至于怎么找重复文件,推荐使用AcuteFinder(或者用上面提到的Dupemerge),这个软件可以导出文件列表,然后在excel里面编辑生成硬连接的批处理文件。保存运行就好了。放到一块,方便管理把需要备份的文件创建硬连接放到一个文件夹(比如C:Backup),在重装系统的时候就把Backup文件夹复制到其它盘就行了。同步软件,请靠边站只要你需要同步的文件放在同一个NTFS分区,就可以对同步软件说Byebye了。直接添加相应的硬连接就可以实现同步的功能了。
不在同一个分区的话也可以用“文件夹连接”来实现同步的功能,不过前提还是要NTFS分区。