通过 cron 进行 rsync。如何启用日志记录?

通过 cron 进行 rsync。如何启用日志记录?

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

在 cron.daily 中我有一个包含以下内容的文件:

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

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

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

记录它的最佳方法是什么,以便我可以确定它是否已完成? cron 日志未显示任何错误。我还没有尝试过,但备份机器上较旧版本的 CentOS 上的 rsync 手册页没有显示 --log-file 选项。我想我可以用 > 重定向 stdout,但我真的不想知道每个文件。我只是想知道它是否全部有效。

谢谢

答案1

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

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

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

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

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

答案2

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

答案3

也许您可以通过以下命令使用系统日志:记录器

我以这种方式运行脚本:

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

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

相关内容