通过 cron 同步。如何启用日志记录?

tet*_*anz 8 rsync

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

在 cron.daily 我有一个文件:

rsync -avz -e ssh root@example.com:/ /mybackup/
Run Code Online (Sandbox Code Playgroud)

它使用公钥/私钥对登录。这在大多数情况下似乎运行良好,但是,我(愚蠢地)只是通过查看我知道每天都在更改的一些重要文件(MySQL 转储)上的日期来真正检查过它。显然,在该文件之后可能会发生错误。

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

记录它以便我可以确定地检查它是否完成的最佳方法是什么?cron 日志没有指示任何错误。我还没有尝试过,但是备份机器上旧版 CentOS 上的 rsync 手册页没有显示 --log-file 选项。我想我可以用 > 重定向标准输出,但我真的不想知道每个文件。我只是想知道这一切是否有效..

谢谢

lar*_*sks 14

我想你已经解决了你自己的问题。如果您将 stdout 和 stderr 都重定向到一个文件,则不会为每个文件 rsync 传输获得输出——这仅在您以详细 ( -v) 模式运行时才会产生。的默认行为rsync是仅在发生错误时产生输出。所以你可以这样做...

rsync ... > /var/log/rsync.log 2>&1
Run Code Online (Sandbox Code Playgroud)

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

您还可以利用rsync在传输失败时以非零代码退出的事实,因此您可以这样做:

rsync ... || echo "rsync failed" | mail -s 'rsync falied' you@example.com
Run Code Online (Sandbox Code Playgroud)