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


8

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

在cron.daily中,我有一个文件:

rsync -avz -e ssh root@example.com:/ /mybackup/

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

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

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

谢谢

Answers:


13

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

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

...并检查该文件以查看最新的rsync是否成功。我显式使用>,每次rsync运行时都会覆盖日志文件。

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

rsync ... || echo "rsync failed" | mail -s 'rsync falied' you@example.com

谢谢。我会去的。我以为我会在日志中获取每个文件,因为如果我手动尝试而没有冗长的内容,这就是我在屏幕上看到的内容。邮件内容看起来不错。
特伦兹2011年

如果您在不带该-v标志的情况下手动运行rsync,但仍看到每个文件的输出,则说明存在问题。rsync手册页上说:“缺省情况下,rsync默默工作。单个-v将为您提供有关正在传输哪些文件的信息,并在最后提供一个简短摘要。”
larsk 2011年

好吧,这肯定是正在发生的事情。-v默认情况下处于打开状态。我只是按照您的建议进行了日志重定向,日志中的每个文件都有一行。我并不是说你错了。CentOS必须以不同的方式编译rsync。我为/ proc和/ sys添加了排除项。
特伦茨2011年

我正在运行CentOS,rsync的行为如上所述。您的命令行实际上是什么样的?
larsk 2011年

1
瞧,您正在以详细模式运行。你在-v那里。
larsk 2011年


1

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

我以这种方式运行脚本:

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.