备份/克隆 btrfs 分区

Man*_*our 9 backup clone btrfs

是否可以逐字备份一个 btrfs 分区(包括所有通过将快照树标记为 COW 来节省空间的共享结构)到另一个分区?例如,我想备份我的根分区,它有几个 btrfs 子卷(/ 本身的快照)。

我能想到的唯一方法是使用块复制工具,dd但效率低下,因为我的分区只有 20% 已满,我打算定期备份它。我已经使用 增量备份所有内容rsync,因此这不是另一个问题的解决方法。我只需要一点点克隆我的 btrfs 分区,而不必使用诸如dd.

例如,我知道 ext3 提供了转储和恢复实用程序。这就是我正在寻找的东西。

更新

这是一个更新,以澄清这样一个事实,即我希望能够像访问实时磁盘一样访问备份存储上的文件(即我不想将转储文件存储在备份存储上)。

DrY*_*Yak 6

partclone是您正在寻找的工具。

  • 它支持很多 linux 文件系统,包括 BTRFS
  • 它甚至支持其他一些文件系统(如 FAT 或 exFAT)
  • 不像dd它查看文件系统分配映射(例如:FAT 和 exFAT 的 FAT 表、BTRFS 范围映射等)并且只克隆使用过的块。

根据您的使用模式:

  • 如果源和备份目标黑色设备在同一台机器上可见(基本上如果两个磁盘都插入同一台计算机),请使用-b(long: --dev-to-dev)。
  • 或者使用-cand -r(long: --cloneand --restore) 先在源机克隆为partclone自己的镜像格式,然后在备份机上从镜像恢复
  • 根据partclone 联机帮助页,可以通过管道传输图像,因此如果您的空间不足但拥有非常可靠的网络,则应该可以在不保存实际文件的情况下通过网络复制分区。

处理问题的一种完全不同的方法是使用btrfs sendbtrfs receive机制。

  • 这不会产生块设备复制到扇区
  • 但是,通过在两端正确提供参考,它能保持REF联(部分)文件之间的引用。

因此,btrfs 自己的机制不是扇区完美复制(与 partclone 不同),而是范围完美复制(比rsynv -aSHAX仅处理硬链接文件要好得多)。


Cry*_*vok 1

dd通过类似或您最喜欢的其他压缩程序的管道输出,bzip2该程序将从标准输入读取。我在 500 GB 的磁盘上完成了此操作,该磁盘的安装相对较小,最终得到了 8 GB 的文件。

  • 您必须先用零填充可用空间(例如“cat /dev/zero > Zeroes”)以删除仍在磁盘上的未链接数据。但当 BTRFS 将来获得块级重复数据删除功能时,这种方法可能不再有效。 (3认同)