备份/克隆btrfs分区

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

我能想到的唯一方法是使用像dd这样的块复制工具,但效率不高,因为我的分区只有20%的空间,我打算定期备份它。 我已经使用rsync逐步备份了所有内容,所以这不是另一个问题的解决方法。 我只需要一点点的克隆我的btrfs分区,而不必使用诸如dd的工具。

我知道ext3,例如,提供了一个转储和恢复工具。 这是我正在寻找的东西。

UPDATE

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

partclone是你正在寻找的工具。

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

根据您的使用模式:

  • 如果源和目标黑色设备都在同一台计算机上可见(基本上如果两个磁盘都插入同一台计算机),请使用-b (long: --dev-to-dev )。
  • 或者使用-c-r (long:– --clone--restore )首先在源机器上克隆到partclone自己的图像格式,然后从备份机器上的映像恢复
  • 根据partclone联机帮助页 ,可以pipe理图像,所以如果空间不足,但是networking非常可靠,应该可以通过networking复制分区而不保存实际的文件。

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

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

所以btrfs自己的机制不是一个完美的拷贝(与partclone不同),但它是一个完美的拷贝(比只处理硬链接文件的rsynv -aSHAX好得多)。

通过类似bzip2或你从标准input中读取的其他喜爱的压缩程序来输出dd的输出。 我已经在一个500 GB的磁盘上做了这个,它有一个相对较小的安装,并以一个8 GB的文件结束。

还没有尝试过,但是btrfs-image似乎解决了这个问题:

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

更新:不要使用这个作为备份。 感谢您的评论。

我保持开放,不会删除它,这样别人也可以从中学习。

我认为显然没有这样的工具(然而,ATM)。

只是fyi ext2 / 3/4 dump doesen't做你想做的事情…只有fs能够做到这一点我知道的是ntfs(使用ntfs-3g)和zfs

尽pipe您可以使用lvm和实验性精简configuration来解决这个问题。

编辑:回到这几年后实现,你可以用任何文件系统使用squashfs做到这一点…