关于 rsync 的两个问题 - 传输失败和日志记录

关于 rsync 的两个问题 - 传输失败和日志记录

我正在努力实现一个日志备份解决方案,该解决方案将依赖于使用 rsync 将数据从本地服务器移到远程日志服务器。我们有两个顾虑 - 首先,到目前为止,我还没有实现任何需要完成的日志记录。rsync 的手册页很长,而且我们没有使用 rsync 服务器,而只是使用 oncall rsync 将数据从客户端(客户端启动)推送到存储服务器。

任何人想到的首要问题就是,是否有任何记录传输过程中失败的选项,或者类似的东西?

此外,由于我们实现它的方式的性质,shell 脚本首先尝试 ping 本地备份服务器。如果 ping 成功,它会上传文件。但是,如果 ping 不成功,它会上传到地理冗余备份服务器。如果主服务器在 rsync 中途关闭,这会留下一个漏洞。如果传输中途发生故障,有没有办法指定备份目标?

答案1

我认为 rsync 没有任何内置故障转移选项或特殊错误日志记录(除了打印到 stderr 的内容)。它确实有--log-file=--log-file-format=选项,但这些选项专注于记录更新了哪些文件,而不是连接失败。我建议在客户端检查 rsync 的退出状态,如果错误编号表示连接问题(看起来 10、12 和 30 是相关的,但测试会给你一个更好的想法)扫描另一个可访问的服务器并重试。您还可以捕获 rsync 的 stderr 输出,然后直接记录它或扫描它以查找已识别的错误并将其总结在您的日志中。

如果您还想在服务器端进行日志记录,我会编写一个包装器脚本,正常运行 rsync(rsync "$@"传递参数),然后检查其退出状态并记录下来。确保您的脚本本身不会输出任何内容(到 stdout 或 stderr),否则可能会使远程 rsync 客户端感到困惑。

相关内容