如果rsnapshot / rdiff-backup在传输过程中被中断,会发生什么?
问题说明了一切:
如果rsnapshot或rdiff-backup在传输过程中被中断,会发生什么?
我知道rsnapshot试图以旋转方式创建系统的完整快照,而rdiff-backup会进行差异备份,这将基于之前保存在其后面的文件。
那么:如果它在中间被打断会发生什么?
这会导致“不完整的快照”吗?
其他依赖于此快照的快照会被破坏吗? (当然不是,但……?)
我的理解是……
rdiff-backup将在下次运行时检测到不完整的增量。 它将删除不完整的增量,以便备份位置与从未启动中断的备份尝试相同。
rsnapshot稍微复杂一点,因为它的例程更加逐步,并且根据sync_first
和use_lazy_deletes
选项的使用而变化。
- 如果你使用
sync_first
并且rsnapshot sync
被中断,你可以再次运行rsnapshot sync
来理顺。 如果此时意外运行rsnapshot
,则最新的备份点将保持不完整并将通过轮换进行。 - 如果你不使用
sync_first
,你就会遇到一个不完整的备份点,它是旧版本和新版本文件的混合体。 除非您手动反向旋转每个备份点,否则不完整的备份点将通过旋转进行。 - 在这两种情况下,除非启用了
use_lazy_deletes
否则运行rsnapshot
将导致最旧的备份点丢失。
请注意, sync_first
和use_lazy_deletes
的代价是使用更多磁盘空间。
提醒/免责声明:这应该不言而喻,但绝不会盲目地相信他人在互联网上的建议。 如果您打算使用rdiff-backup或rsnapshot来完成关键任务 ,请阅读本手册的每个单词并自行测试,测试和测试 !
那恰好发生在我身上。 我的外部驱动器通过rsnapshot的增量备份完成了一半:
rsync: write failed on "": No space left on device (28)
现在我想分享一些我从中学到的东西。 即修复和限制这种情况的机会让我咬回来;)
恢复Rsnapshot的中断备份
我知道有两种方法可以安全地回滚。
手动
- 删除最后一个目录(例如daily.0)
- 重命名连续目录(daily.1 – > daily.0,…); 可能的脚本1
- 像往常一样运行备份(再次)。
自动
rsnapshot没有暂停/停止和恢复function(有限的“ 由于回滚计划而跳过 ” 2除外),所以我们必须使用包装器来处理这些function。
由Philipp C. Heckel rsnapshot-once
3是PHP中rsnapshot的包装器:
- 无需修改rsnapshot的配置即可使用
- 确保每日,每周和每月任务仅在相应的时间段内运行一次 ,通过cron(适用于笔记本电脑)
- 回滚失败的备份 (检查上次备份是否完成;如果没有,则删除最后一个目录并重命名连续目录,例如daily1。 – > daily.0,…)
使用它一年我是一个快乐的用户:我为我的备份需求编辑了php.ini的openbase_dir
,幸运的是,^ _ ^比我以前的基于原始rsnapshot的解决方案更顺畅,更安全。
注意:slm在这里链接我的重复问题: Rsnapshot目标已满 – 如何安全地重新运行?