我rsync -a
过去常常在文件系统上进行完整备份。它对 stderr 的输出是空的。我是否应该做一些额外的检查来验证备份是否成功?
例如,我如何进行校验和来验证?
rsync
下次使用增量备份时,校验和的校验方式是否一样?增量备份会硬链接到全量备份中未更改的文件,这会不会导致增量备份成功后源和增量备份的校验和不同?
我的操作系统是 Ubuntu 12.04。谢谢。
And*_*zek 10
如果您检查 rsync 的退出代码并返回 0(成功),则不应发生错误。在 shell 脚本中,在 rsync 执行之后,它将立即$?
用于 bourne-likes 和$status
[t]csh。stderr 上没有输出同样是一个好兆头,但我对它的信任程度低于退出代码。
根据失败情况,使用的备份--link-dest
可能没有创建硬链接,但进行校验和扫描会检测到这一点。如果在 rsync 期间创建了硬链接,则它已经确定文件是相同的并且根本不传输文件的数据。在增量备份和完整备份中,硬链接文件不可能有不同的校验和。
如果完整备份失败,则基于该完整备份的所有增量都是可疑的。一般来说,无论完整备份是否完成,rsync 都足够聪明,可以找出差异,在这种情况下,您的后续增量将明显大于正常情况。我仍然会非常担心备份过程中的任何失败。
需要注意的是,-c
(校验和)将强制完全重新读取源系统和目标系统上的每个选定文件,无论日期戳或文件大小如何,并且将大大增加两端所需的时间和系统 io。
编辑:要回答您的后续问题,time
除非运行时出现错误time
,否则将其子程序的返回代码传递给其父程序,例如用户 SIGTERM'd time
。
Run Code Online (Sandbox Code Playgroud)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.