在我的服务器上,我有日志轮换和备份脚本,除此之外,它还备份整个日志目录。
对于日志轮换我使用对数在 Linux 和新系统日志在 BSD 上使用。对于日志备份,我只需cp -Rf /var/log/ /backups/
有时,备份脚本会因为在备份运行期间日志轮换重命名日志文件时发生的竞争条件而失败。所以我得到了类似这样的信息:
cp:/var/log/messages.0:没有此文件或目录
我相信我的情况并非个例。是否有最佳实践可以克服这种竞争条件并使备份更加可靠?
答案1
看起来 logrotate 没有提供任何可以挂接的东西(例如 pid 文件)来解决这个问题,所以你需要解决它。
我会考虑使用羊群(1)适用于 Linux 和 BSD。
您可以让 logrotate 脚本创建一个锁,然后让备份脚本检查并等待该锁。