logrotate 每周归档清空每日文件

logrotate 每周归档清空每日文件

我的目标是保留 4 天的日志文件,以便在第五天创建一个包含所有四个日志文件的 zip 文件。到目前为止创建的四个日志文件将被删除。

这是我的logrotate.conf

/home/ubuntu/logs/server.log {
    daily
    missingok
    rotate 5
    compress
    create
    dateext
    dateyesterday
    dateformat .%Y-%m-%d
    extension .gz
}

我有一个crontab条目:

2 0 * * * /usr/sbin/logrotate /home/ubuntu/logrotate.conf --state /home/ubuntu/logrotate.state 

我看到了第五天的 zip 文件以及前四天的空文件和另外四个空文件的 zip 文件。

rotate 5这难道不是compress说将前 4 个文件压缩为一个存档并解压后删除吗?

答案1

rotatecompress是独立的。compress压缩每个轮换日志文件,rotate设置要保留多少个轮换日志文件。一起使用它们并不意味着轮换日志文件被合并和压缩。

你可以使用post-rotate如下脚本:

zcat /home/ubuntu/logs/server.log.*.gz |
  gzip | sponge /home/ubuntu/logs/server.log.$(date -d "now - 5 days" +%Y-%m-%d).gz

(使用spongefrommoreutils覆盖最后一个日志文件)

也就是说,extension .gz除非您的日志文件实际上有.gz扩展名,否则它是无用的。

相关内容