You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

logrotate的postrotate阶段rsync同步日志延迟一天,如何同步当日压缩文件

问题根因

logrotate处理单份日志的默认流程为:

  • 重命名原日志文件,附加上配置的日期后缀
  • 执行postrotate段脚本(通常用来通知日志采集程序重新加载日志文件)
  • 对重命名后的日志文件执行压缩操作,生成.gz后缀的压缩包
  • 执行lastaction段脚本(所有日志处理、压缩动作完成后执行)

你当前将rsync同步命令放在postrotate段,此时新轮转的日志还没有完成压缩,没有.gz后缀,无法匹配/var/log/mikrotik*.gz的通配规则,因此不会被同步。等到下一次日志轮转时,这份日志已经完成压缩,才会被rsync同步到备份目录,所以出现了延迟一天的问题。

解决方案

调整logrotate配置,将rsync同步命令放到lastaction段即可,修改后的完整配置如下:

/var/log/mikrotik.log {
rotate 2
daily
compress
dateext
dateyesterday
dateformat .%Y-%m-%d
postrotate
#/usr/sbin/invoke-rc.d syslog-ng reload >/dev/null
/usr/lib/rsyslog/rsyslog-rotate
endscript
lastaction
rsync -avH /var/log/mikrotik*.gz /backup/logs/mikrotik/
endscript
}

如果你的logrotate版本过低不支持lastaction,也可以在postrotate段的rsync命令之前手动触发一次对应日志的压缩,不过这种方式不如使用lastaction规范,不推荐。

内容的提问来源于stack exchange,提问作者Leo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 04:00:01