我正在使用 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)
| 归档时间: |
|
| 查看次数: |
33177 次 |
| 最近记录: |