如果rsnapshot / rdiff-backup在传输过程中被中断,会发生什么?

问题说明了一切:

如果rsnapshot或rdiff-backup在传输过程中被中断,会发生什么?

我知道rsnapshot试图以旋转方式创建系统的完整快照,而rdiff-backup会进行差异备份,这将基于之前保存在其后面的文件。

那么:如果它在中间被打断会发生什么?

这会导致“不完整的快照”吗?

其他依赖于此快照的快照会被破坏吗? (当然不是,但……?)

我的理解是……

rdiff-backup将在下次运行时检测到不完整的增量。 它将删除不完整的增量,以便备份位置与从未启动中断的备份尝试相同。

rsnapshot稍微复杂一点,因为它的例程更加逐步,并且根据sync_firstuse_lazy_deletes选项的使用而变化。

  • 如果你使用sync_first并且rsnapshot sync被中断,你可以再次运行rsnapshot sync来理顺。 如果此时意外运行rsnapshot ,则最新的备份点将保持不完整并将通过轮换进行。
  • 如果你不使用sync_first ,你就会遇到一个不完整的备份点,它是旧版本和新版本文件的混合体。 除非您手动反向旋转每个备份点,否则不完整的备份点将通过旋转进行。
  • 在这两种情况下,除非启用了use_lazy_deletes否则运行rsnapshot 将导致最旧的备份点丢失。

请注意, sync_firstuse_lazy_deletes的代价是使用更多磁盘空间。


提醒/免责声明:这应该不言而喻,但绝不会盲目地相信他人在互联网上的建议。 如果您打算使用rdiff-backup或rsnapshot来完成关键任务 ,请阅读本手册的每个单词并自行测试,测试测试

那恰好发生在我身上。 我的外部驱动器通过rsnapshot的增量备份完成了一半:

 rsync: write failed on "": No space left on device (28) 

现在我想分享一些我从中学到的东西。 即修复和限制这种情况的机会让我咬回来;)

恢复Rsnapshot的中断备份

我知道有两种方法可以安全地回滚。

手动

  1. 删除最后一个目录(例如daily.0)
  2. 重命名连续目录(daily.1 – > daily.0,…); 可能的脚本1
  3. 像往常一样运行备份(再次)。

自动

rsnapshot没有暂停/停止和恢复function(有限的“ 由于回滚计划而跳过 ” 2除外),所以我们必须使用包装器来处理这些function。

由Philipp C. Heckel rsnapshot-once 3是PHP中rsnapshot的包装器:

  • 无需修改rsnapshot的配置即可使用
  • 确保每日,每周和每月任务仅在相应的时间段内运行一次 ,通过cron(适用于笔记本电脑)
  • 回滚失败的备份 (检查上次备份是否完成;如果没有,则删除最后一个目录并重命名连续目录,例如daily1。 – > daily.0,…)

使用它一年我是一个快乐的用户:我为我的备份需求编辑了php.ini的openbase_dir ,幸运的是,^ _ ^比我以前的基于原始rsnapshot的解决方案更顺畅,更安全。

注意:slm在这里链接我的重复问题: Rsnapshot目标已满 – 如何安全地重新运行?