请输入您要查询的百科知识:

 

词条 硬连接
释义

硬连接是对于同一文件系统的一个文件的连接,节点是文件存在的唯一标识,在文件系统中是唯一的,但在不同的文件系统则有可能重复。这样的话,在不同文件系统中作链接时,是不能使用ln A B,应该用符号连接,即是软连接,它只是包含了系统中一个完整的路径名引用。硬连接就是记录了文件的地址,你在文件管理器中看到的每个文件都是磁盘里文件的“硬连接”。当一个文件的所有硬连接都被删除的时候,该文件占用的空间才可以被新加入的数据覆盖。

在Windows下创建硬连接

在LINUX、UNIX下面创建硬连接已经“司空见惯”了(上面提到的是Linux里面的命令),这里说的是怎么在Windows下面创建硬连接。

Windows XP

XP 也有硬连接?没错!不过,先声明,这个仅仅是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是一样的,具体使用方法请看其官方网站。

查找重复文件的命令行工具Dupemerge

Dupemerge可以查找硬盘上的重复文件,并为其创建硬连接,以达到节省空间的目的。

需要注意的是,不要将一些软件中“雷同的”——通常是零字节——配置文件也弄成硬连接了。

连接的应用

共用文件,无需复制

如果你有几个版本的Eclipse的话,用硬连接来共享插件,那就可以省下很多硬盘空间了。

至于怎么找重复文件,推荐使用AcuteFinder(或者用上面提到的Dupemerge),这个软件可以导出文件列表,然后在excel里面编辑生成硬连接的批处理文件。保存运行就好了。

放到一块,方便管理

把需要备份的文件创建硬连接放到一个文件夹(比如C:\\Backup),在重装系统的时候就把Backup文件夹复制到其它盘就行了。

同步软件,请靠边站

只要你需要同步的文件放在同一个NTFS分区,就可以对同步软件说Byebye了。直接添加相应的硬连接就可以实现同步的功能了。

不在同一个分区的话也可以用“文件夹连接”来实现同步的功能,不过前提还是要NTFS分区。

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/3/1 15:03:24