可能重复:
如何重复调用 rsync 直到文件传输成功
我配置了夜间 rsync,将一台服务器镜像到一台备用异地备份服务器。主服务器上的总数据存储量为 1.5TB。在实现此功能的过程中,我遇到了许多环境不稳定问题,我似乎已经解决了这些问题,但即使现在它可以正常工作,我仍然感到紧张。这台服务器旨在用作灾难场景备用服务器,如果发生灾难并且备用服务器没有同步所有正确的数据,我就失业了。
因此,我想编写一个系统脚本,在每晚同步后确认目标数据与源数据是否匹配。我意识到 rsync做这个,但是如果 rsync 没有完全完成(在安装故障排除期间发生),我需要知道。
有什么建议吗?如果 Ruby 与解决方案相关,我最擅长使用 Ruby。
答案1
我只需在机器上设置一个 MTA(SMTP协议如果您有可用的智能主机,这很棒),这样 cronjob 的任何输出都会通过邮件发送给您。运行rsync
with--quiet
应该就足够了(即,如果成功,它不应该输出任何内容,但如果不成功,则输出错误消息),但您也可以在脚本中明确检查其退出代码,以确保有一些输出。
#!/bin/sh
rsync [...]
CODE=$?
if [ "$CODE" -ne 0 ]; then
echo "rsync exited with code $CODE"
fi
答案2
看一下托管解决方案 PushMon。首先创建一个 PushMon URL。然后在脚本中,当退出代码为 0 时,调用您的 PushMon URL。只要您继续调用 PushMon URL,就不会发送任何警报。当您的脚本不运行或挂起,因此不会调用 PushMon URL 时,您将收到警报。
注意我与 PushMon 有关联。