是否有一个文件系统只保留一个文件的一个副本,而其他副本只是引用?

Dej*_*kic 18 linux filesystems

这个问题可能不准确,所以我将尝试更详细地解释它。

出于多种原因,我的 Linux 文件系统上有很多相同文件的副本。其中许多都相当大。

假设我有/path/to/some.file这个文件/other/path/file.name/yet/another/path/third.copy. 我想知道是否有一个文件系统可以让其中两个文件作为对原始文件的引用。自然地,如果用户修改其中之一,那么并且只有这样它们才成为独立文件。

附注。我知道这可以(部分)通过使用链接来完成。但是我希望我在上面试图解释的这个功能由文件系统透明地处理。

小智 18

此功能称为重复数据删除。流行的 Linux 文件系统 (ext*) 都不支持它,但显然ZFS 部分支持它。还有一个文件系统列表,其中包括重复数据删除,但似乎没有任何流行的选择——不过,它是 Btrfs 的一个计划功能。

我猜想定期检查您的文件系统并创建适当的硬链接是目前您可以做的最好的事情,尽管这并不意味着写时复制。


afr*_*ier 10

您要查找的主要关键字是“写入时复制”。BTRFS 确实有一个克隆操作,它完全符合你的要求,并且cp --reflink会做你想要的,前提是你的系统有一个足够现代的内核和 coreutils 7.5。 Wiki Source此外,bedup是一种工具,可以合并整个卷上的重复项。CoW 也是 btrfs 快照技术 IIRC 下的驱动功能。