网络上有几篇关于使用btrfs对快照进行差分同步的文章和工具。
我的问题是关于增量过程的引导。
当我使用类似的东西设置备份目录时,我可以开始快照的增量备份
(src)$ sudo btrfs send initial_snapshot -f somedir/initial_snapshot.data"
(dst)$ sudo btrfs receive initial_snapshot -f somedir/initial_snapshot.data"
(假设src
并且dst
在不同的块设备上,甚至在不同的机器上)。
有没有办法从与同步的子卷开始rsync
?即我可以那样引导差分同步吗?
如果我以天真的方式执行此操作(在每个快照src
上dst
同步rsync
并创建只读快照),我会收到以下错误:
btrfs error: can not find parent snapshot
是的,这是可以理解的。
但是有没有办法“说服” btrfssrc
并dst
包含相同的数据并且initial_snapshot
可以用作增量快照的父级?
不幸的是,除了发送/接收操作之外,您无法引导它。发送/接收的增量传输取决于两件事:
btrfs subvolume show
,但除了直接修改这些值之外,无法设置这些值。rsync
如果除了跨快照之外不涉及任何重新链接(也就是说,没有任何东西在源快照的父子卷内的任何内容上使用过 CLONE_RANGE 或 EXTENT_SAME ioctl),则技术上应该满足此要求。理论上,实际上可以绕过这两个约束,但是这样做需要付出很大的努力,并且需要非常低级的 BTRFS 知识(并且风险极大)。