备份/克隆 btrfs 分区

备份/克隆 btrfs 分区

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

我能想到的唯一方法是使用块复制工具dd,但效率很低,因为我的分区只占了 20%,我打算定期备份。我已经使用 增量备份了所有内容rsync,因此这不是解决另一个问题的解决方法。我只需要一点来对我的 btrfs 分区进行位克隆,而不必使用 之类的工具dd

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

更新

这里有一个更新,以澄清这样一个事实:我希望能够以与在活动磁盘上相同的方式访问备份存储上的文件(即,我不想将转储文件存储在备份存储上)。

答案1

部分克隆是您正在寻找的工具。

  • 它支持很多 Linux 文件系统,包括 BTRFS
  • 它甚至支持一些其他文件系统(如 FAT 或 exFAT)
  • 与它不同的是,dd它查看文件系统分配图(例如:FAT 和 exFAT 的 FAT 表、BTRFS 范围图等)并仅克隆已使用的块。

根据您的使用模式:

  • 如果源和备份目标黑色设备在同一台机器上可见(基本上如果两个磁盘都插入同一台计算机),则使用-b(长:) 。--dev-to-dev
  • 或者使用-cand -r(长:--cloneand --restore)首先在源机器上克隆到 partclone 自己的镜像格式,然后在备份机器上从镜像中恢复
  • 根据partclone 手册页,可以通过管道传输图像,因此如果空间不足但网络极其可靠,那么应该可以通过网络复制分区而不保存实际文件。

处理该问题的完全不同的方法是使用btrfs send机制btrfs receive

  • 这不会产生块设备副本到扇区
  • 但通过在两端正确提供引用,能够保持 ref-linked 文件(部分)之间的引用。

因此,btrfs 自身的机制并不是部门完美复制(与 partclone 不同),但它是程度rsynv -aSHAX完美复制(比仅处理硬链接文件要好得多)。

答案2

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

答案3

尚未尝试,但btrfs-image似乎可以解决这个问题:

https://btrfs.wiki.kernel.org/index.php/Manpage/btrfs-image

更新:不要将其用作备份。感谢您的评论。

我将这个保留并且不会删除它,以便其他人也可以从中学习。

答案4

我认为显然还没有这样的工具(目前还没有)。

相关内容