是否有可能以及如何在 btrfs 文件系统中的不同快照之间合并相同的文件?

Tor*_*nny 3 backup compression btrfs merge snapshot

我经常使用 btrfs 的快照来备份整个系统,但是在不同的快照之间拥有相同的文件是多余的。通常,例如,我将@ 的快照拍摄为@_without_install_nvidia_driver,并安装了nvidia_driver。几天后,我更新了系统,导致大量文件更改。后来,几天后,发现nvidia_driver包不稳定,又恢复到@_without_install_nvidia_driver,但不得不再次更新系统,发现两个快照中存在相同的文件,因为系统现在已经在两个快照中更新。

这让我想知道:有没有办法在不同的快照之间合并相同的文件?

der*_*ert 8

您可以使用Bedup 实用程序对相同的文件进行重复数据删除。一旦你安装了它,使用就相当简单:

# bedup dedup /path/to/btrfs
Run Code Online (Sandbox Code Playgroud)

您可能需要将快照设置为可写 ( btrfs property set -ts /path/to/snapshot ro false),以便它可以对它们进行重复数据删除。之后您可以将它们改回来。

请注意,根据您拥有的文件数量,这可能需要一段时间(它首先查找相同大小的文件,然后比较这些文件……因此,如果您有一堆相同大小的大文件,则可能需要一点点。)

最后,您可以不时地再次运行它,未来的运行会更快,因为它会跟踪 btrfs 生成并使用它来跳过旧文件。