如何检查 rsync 备份是否成功?

如何检查 rsync 备份是否成功?

我曾经rsync -a对文件系统进行过完整备份。其 stderr 输出为空。我是否应该进行一些额外检查来验证备份是否成功?

例如,我如何进行校验来验证这一点?

下次我使用增量备份时rsync,检查校验和的方式是否相同?增量备份将对完整备份中未更改的文件进行硬链接,这是否会导致源和增量备份的校验和不同,尽管增量备份成功了?

我的操作系统是 Ubuntu 12.04。谢谢。

答案1

如果您检查 rsync 的退出代码,并且它返回 0(成功),则应该没有发生错误。在 shell 脚本中,rsync 执行后,$?bourne-likes 和$status[t]csh 会立即返回。stderr 上没有输出同样是一个好兆头,但我不太相信它,因为我更不相信退出代码。

根据故障情况,使用的备份--link-dest可能没有创建硬链接,但执行校验和扫描会检测到这一点。如果在 rsync 期间创建了硬链接,则它已经确定文件是相同的,并且根本没有传输文件的数据。硬链接文件在增量备份和完整备份中的校验和不可能不同。

如果完整备份失败,则基于该完整备份的所有增量备份都值得怀疑。一般来说,无论完整备份是否完成,rsync 都足够聪明,能够找出差异,在这种情况下,您的后续增量备份将比正常情况大得多。我仍然非常担心备份过程中的任何故障。

需要注意的是,-c(校验和)将强制重新读取源系统和目标系统上选定的每个文件,无论日期戳或文件大小如何,都将大大增加两端所需的时间和系统 io。


编辑:回答您后续的问题,time将把子程序的返回代码传递给其父程序,除非运行时出现错误time,例如用户 SIGTERM time

DIAGNOSTICS
       The time command returns when the program exits, stops, or is terminated by a
       signal. If the program exited normally, the return value of time is the
       return value of the program it executed and measured. Otherwise, the return
       value is 128 plus the number of the signal which caused the program to stop
       or terminate.

相关内容