备份/克隆btrfs分区


9

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

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

我知道ext3例如提供了转储和还原实用程序。这就是我要找的东西。

更新

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

Answers:


6

partclone是您正在寻找的工具。

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

根据您的使用方式:

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

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

  • 这不会产生阻止设备复制到该扇区
  • 但是,通过在两端正确提供引用,它可以将引用保留在ref链接的(部分)文件之间。

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


1

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


1
您必须先用零(例如cat /dev/zero > zeroes)填充可用空间,以消除仍在磁盘上的未链接数据。但是当将来BTRFS进行块级重复数据删除时,这可能不再起作用。
Wim Coenen

请查看我的问题的更新。
曼苏尔

1

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

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

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

我将其保持打开状态,并且不会删除它,以便其他人也可以从中学习。


2
警告,btrfs-image仅复制META数据,而不复制文件本身中的数据。(它用于向开发人员发送副本,以便他们可以查看出了什么问题。不复制数据)。
DrYak '16

-2

只是fyi ext2 / 3/4 dump并没有做你想做的事...只有fs能够做到这一点,我知道的是ntfs(使用ntfs-3g)和zfs

虽然您可以使用lvm和实验性精简配置来实现这一目标...

编辑:回到这几年后才意识到,您可以使用squashfs在任何文件系统上执行此操作...


对于很多不是ntfs-3g或zfs的分区,partclone都能做到这一点。
DrYak '16

ntfsclone绝对支持@DrYak可挂载的NTFS稀疏映像... linux.die.net/man/8/ntfsclone
Fox

-3

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.