单个 NTFS 文件可以“硬链接”到多个目录条目;所有目录条目(例如 A、B、C)都指向相同的数据。如果对该单个文件(例如 A)进行了更改,则所有条目(A、B、C)现在都引用相同的更改数据。但是,如果您不希望 B 的数据发生变化怎么办?有没有办法让 Windows 将更改的 A 数据写入新文件,让 B 引用相同的未更改数据?例如,改变的A数据可以自动写入一个新的文件;或者可以警告用户并让用户选择是否将其他目录条目(B、C 等)链接到新数据。我确实看到,如果将 B 设置为只读,则无法写入 A,并且必须将对 A 的更改保存为新名称。但我更希望将更改自动写入新文件,
这将不再是“硬链接”;它将被称为“reflink”或“copy-on-write link”。
NTFS 不支持写时复制链接,因为它通常不支持在文件之间共享范围(而硬链接不只是共享数据,它们共享仅附加了多个名称的整个文件)。
同时,ReFS确实通过块克隆支持 CoW 链接;Microsoft 已发布用于创建它们的工具。(Windows 仅支持数据卷的 ReFS,而不支持系统卷,据我所知,您需要借用 Windows Server 才能创建 ReFS 卷。)
Btrfs 和 XFS 在 Linux 上也支持重新链接。Windows 上的 Btrfs 使用实验性WinBtrfs也支持它们,但我听说 WinBtrfs 不是很可靠的报告。