【问题标题】:btrfs send / receive on incremental folders that rotatebtrfs 在旋转的增量文件夹上发送/接收
【发布时间】:2021-09-13 14:43:35
【问题描述】:

我正在使用 rsnapshot 结合自定义的增量备份 cmd_cpcmd_rm 使用 btrfs 快照,这会产生多个 每日 btrfs 子卷:

.sync
daily.0
daily.1
daily.2

.sync 是使用 SSH 从我备份的服务器同步到的文件夹。 完成后会发生这种情况:

mv daily.2/ daily.3/
mv daily.1/ daily.2/
mv daily.0/ daily.1/
rsnapshot_cp_btrfs -al .sync daily.0

cp 命令翻译成btrfs subvolume snapshot -r .sync daily.0

这一切都很好。但现在我想将所有备份同步到另一台服务器 也是,所以我有所有备份的完整镜像。这种同步应该始终有效, 即使它会在一周后同步(可能是由于 SSH 连接问题)。

通常使用 btrfs 发送和接收使用父同步很容易 wiki 上描述的快照: https://btrfs.wiki.kernel.org/index.php/Incremental_Backup#Doing_it_by_hand.2C_step_by_step

我想象了一个循环,它只发送所有日常文件夹并维护旧的 备份供家长参考。

但在这种情况下,daily.0 移动到 daily.1,从 1 移动到 2,依此类推。所以这行不通。

我可以向远程服务器发送一个简单的mv,但我不能相信它,因为 如果出现任何错误,文件夹结构将在一天后不正确。我想要一个真正的镜像,但要使用 btrfs 工具。

有没有人处理过类似的情况或知道克隆所有的最佳方法 子卷到另一台服务器?

非常感谢!

【问题讨论】:

    标签: backup clone mirror btrfs rsnapshot


    【解决方案1】:

    我解决了!我创建了一个 bash 脚本,它将名称中带有日期的所有快照同步到远程服务器。从btrfs subvolume show 中减去日期。

    所以daily.0 可以在遥控器上变成2021-09-20-08-44-46

    我向后同步。 daily.30 首先。 daily.0 最后。这样我可以通过 btrfs send 的正确父级。例如:btrfs send -p daily.30 daily.29.

    如果遥控器上存在名为快照的日期,我检查btrfs subvolume show 是否正确同步。如果没有,我删除远程子卷/快照并 重新同步。如果它已经同步,我将跳过同步。正确同步的子卷/快照具有 Received UUIDreadonly 标志。

    同步后,我将遥控器的所有快照名称与刚刚同步的名称进行比较。 差异将被删除(因此旧快照)。

    我可能会在将来所有代码都长期稳定时分享代码。 现在我希望以上信息对其他人有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-21
      • 2014-07-31
      • 1970-01-01
      • 2013-01-01
      • 2012-08-10
      • 2012-12-09
      • 1970-01-01
      • 2011-09-20
      相关资源
      最近更新 更多