rsync通过cron。 我如何启用日志logging?

我使用rsync将远程服务器备份到另一台计算机。

在cron.daily我有这样的文件:

rsync -avz -e ssh [email protected]:/ /mybackup/ 

它使用公钥/私钥对进行login。 这似乎大多数时候都工作得很好,但是我(愚蠢地)只是通过查看我知道每天都会改变的一些重要文件(MySQL转储)上的date来真正检查它。 显然,该文件后可能会发生错误。

有时候会失败 当我手动运行时,有时会发生类似“客户端重置”的情况。

什么是最好的方式来logging它,以便我可以肯定地检查它是否完成? cron日志不会指出任何错误。 我还没有尝试过,但备份机器上旧版CentOS的rsync手册页并没有显示–log-file选项。 我想我可以redirect标准输出>但我真的不想知道每个文件。 我只是想知道这一切是否奏效

谢谢

我想你已经解决了你自己的问题。 如果将stdout和stderr都redirect到一个文件,那么每个文件都不会得到rsync传输的输出 – 这只有在以verbose( -v )模式运行时才会产生。 rsync的默认行为是仅在发生错误时才产生输出。 所以你可以这样做…

 rsync ... > /var/log/rsync.log 2>&1 

…并检查该文件,以查看最近的rsync是否成功。 我明确地使用> ,每次rsync运行时都会覆盖日志文件。

当传输失败时,你还可以利用rsync以非零代码退出的事实,所以你可以这样:

 rsync ... || echo "rsync failed" | mail -s 'rsync falied' [email protected] 

取出-v选项并添加-q。 这只会给错误

也许你可以通过命令: logger来使用syslog。

我这样运行脚本:

 rsync -v what user@host 2>&1 | logger -t backup 

这将默认写入/var/log/messages