词条 | 硬连接 |
释义 | 硬连接是对于同一文件系统的一个文件的连接,节点是文件存在的唯一标识,在文件系统中是唯一的,但在不同的文件系统则有可能重复。这样的话,在不同文件系统中作链接时,是不能使用ln A B,应该用符号连接,即是软连接,它只是包含了系统中一个完整的路径名引用。硬连接就是记录了文件的地址,你在文件管理器中看到的每个文件都是磁盘里文件的“硬连接”。当一个文件的所有硬连接都被删除的时候,该文件占用的空间才可以被新加入的数据覆盖。 在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:\\test.ini D:\\TEST\\boot.ini 这个命令来创建跨分区文件硬连接”的想法呢?我试了,失败,输出结果如下(因为我的junction刚下载,是一个压缩包,就用WinMount虚拟成一个盘了。粗体字是系统输出的,其中包含网址的那行删掉了): Z:\\>junction.exe d:\\test c:\\ Junction v1.05 - Windows junction creator and reparse point viewer Created: d:\\test Targetted at: c:\\ Z:\\>fsutil hardlink create d:\\test.exe d:\\test\\boot.ini 新链接和现有文件必须在同一个卷上。 junction命令还可以把空文件夹删除掉: D:\\>md TestJunctionDir D:\\>junction TestJunctionDir /d Deleted TestJunctionDir. 如果用于非空文件夹就会出错: C:\\Temp\\test>md TestJunctionDir C:\\Temp\\test>dir > TestJunctionDir\\test.txt C:\\Temp\\test>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 文件夹连接名 /d Vista、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分区。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。