三种机制,一个思路:指向别处
硬链接是同一个文件的第二个目录项:两个名字指向同一条 MFT 记录,NTFS 为此维护一个链接计数——删掉一个名字,数据仍会活到最后一个链接消失为止。硬链接只对文件有效,不能用于文件夹,也不能跨卷。WinSxS 背后就是这一招:组件存储、System32 和成山的更新备份共享同一批物理文件,所以每个“副本”在磁盘上都不多占一个字节。
联接(junction)是挂在目录上的重解析点——一项 Windows 2000 时代的技术,把同一台机器上的一个文件夹重定向到另一个。Windows 正是这样造出指向 C:\Users 的“Documents and Settings”这类兼容幽灵的。符号链接是更现代、更强大的版本:既能指向文件也能指向文件夹,支持相对路径、可以跨卷,但创建它需要提权的命令提示符或开发者模式。
命令,以及它们到底创建了什么
一切靠 mklink 完成,开关就是全部戏码。打开提权的命令提示符,下面三种形式能覆盖九成的真实场景。用 dir /AL 验证结果——重解析点会显示为 <SYMLINK>、<SYMLINKD> 或 <JUNCTION>,括号里是链接目标。
- mklink /H backup.txt original.txt——硬链接:两个名字、一个文件、零额外字节
- mklink /J C:\Link C:\RealFolder——联接:老派、快速,仅限同一卷上的文件夹
- mklink /D C:\Link C:\RealFolder——目录符号链接:需要管理员权限或开发者模式
- fsutil hardlink list file.txt——列出这些数据可达的每一个名字
- dir /AL——列出文件夹中的重解析点,含类型和目标
链接咬人的地方:备份、清理工具和移动
天真的空间统计工具会把硬链接文件按链接数逐个上报,于是“去重”工具才能在健康的 Windows 安装上自豪地宣布节省了 40GB 想象出来的空间。有些清理工具会顺着联接一路追进目标,从后门删掉真实数据;靠谱的工具则会完全跳过重解析点。而如果你把含联接的文件夹拖到另一块盘,资源管理器可能悄悄把链接替换成目标的完整副本——几个 GB 凭空冒出来。
安全的习惯很简单:链接用来搭结构,不用来存数据;在数据盘根目录创建的每个联接都要留档。在没按硬链接口径扫描过的卷上,永远别相信文件夹大小数字——删掉看似重复的文件之前先跑 fsutil hardlink list,因为如果数据有两个名字,你看到的根本不是副本。
常见问题与解答
联接和快捷方式是一回事吗?
不是。快捷方式是一个 .lnk 文件,需要每个应用程序自行理解;联接工作在文件系统层面,所有程序都能透明地看到目标文件夹的内容。
删除硬链接会删掉原文件吗?
不会。只有当最后一个硬链接也被删除时数据才会消失;在那之前,每个名字都是平等的所有者,而不是指向某个“真正”原件的引用。
继续阅读
联系我们: [email protected]