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

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

问题说明了一切:

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

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

那么:如果中途被打断会发生什么?

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

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

答案1

我的理解是...

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

快照稍微复杂一些,因为它的例程更加分步,并且根据sync_firstuse_lazy_deletes选项的使用而有所不同。

  • 如果您使用sync_first并被rsnapshot sync打断,您可以简单地rsnapshot sync再次运行以解决问题。如果您不小心rsnapshot <backup level>在此时运行,最新的备份点将保持不完整并将通过轮换进行。
  • 如果您不使用sync_first,那么您只能得到一个不完整的备份点,它是新旧版本文件的混合体。除非您手动反向旋转每个备份点,否则不完整的备份点将进行旋转。
  • 在这两种情况下,运行rsnapshot <backup level>都会导致最旧的备份点丢失,除非use_lazy_deletes启用。

请注意,sync_firstuse_lazy_deletes会占用更多的磁盘空间。


提醒/免责声明:这应该是不言而喻的,但永远不要盲目相信互联网上其他人的建议。如果你打算使用 rdiff-backup 或 rsnapshot 来做某事任务关键型, 读每一个手册的字样和测试,测试,测试一切你自己!

答案2

这刚刚发生在我身上。我的外部驱动器在 rsnapshot 的增量备份过程中已满:

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

现在我想分享我从中学到的几件事。例如修复和限制这种情况对我造成不利影响的机会;)

恢复 Rsnapshot 中断的备份

我知道两种安全回滚的方法。

手动

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

自动地

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

rsnapshot-once3由 Philipp C. Heckel 编写的 rsnapshot 包装器用 PHP 编写,其功能如下:

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

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

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

相关内容