btrfs 在旋转的增量文件夹上发送/接收
btrfs send / receive on incremental folders that rotate
我正在使用 rsnapshot
结合自定义的增量备份
cmd_cp
和 cmd_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 发送和接收使用父级同步很容易
维基上描述的快照:
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 工具。
有没有人处理过类似的情况或知道克隆所有的最佳方法
子卷到其他服务器?
非常感谢!
我解决了!我创建了一个 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
.
如果远程上存在名为 snapshot 的日期,我会检查 btrfs subvolume show
是否正确同步。如果没有,我删除远程 subvolume/snapshot 和
重新同步。如果它已经同步,我将跳过同步。正确同步的 subvolume/snapshot 具有 Received UUID
和 readonly
标志。
同步后,我将远程的所有快照名称与刚刚同步的名称进行比较。
差异将被删除(因此旧快照)。
我可能会在代码长期稳定后分享代码 运行。
现在我希望以上信息对其他人有所帮助!
我正在使用 rsnapshot
结合自定义的增量备份
cmd_cp
和 cmd_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 发送和接收使用父级同步很容易 维基上描述的快照: 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 工具。
有没有人处理过类似的情况或知道克隆所有的最佳方法 子卷到其他服务器?
非常感谢!
我解决了!我创建了一个 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
.
如果远程上存在名为 snapshot 的日期,我会检查 btrfs subvolume show
是否正确同步。如果没有,我删除远程 subvolume/snapshot 和
重新同步。如果它已经同步,我将跳过同步。正确同步的 subvolume/snapshot 具有 Received UUID
和 readonly
标志。
同步后,我将远程的所有快照名称与刚刚同步的名称进行比较。 差异将被删除(因此旧快照)。
我可能会在代码长期稳定后分享代码 运行。 现在我希望以上信息对其他人有所帮助!