logrotate仅压缩最后n个日志

我需要每天轮换/ var / log / messages保持60天,最后30个日志必须用bzip2压缩。

这是我的logrotateconfiguration:

/var/log/messages { daily rotate 60 postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript } 

但结果是保持了最近的每天60个没有压缩的日志。 如果添加compress ,那么所有60个日志将被压缩。

那么有没有办法让它压缩只有最后30日志?

我认为没有这样的selectlogrotate直接做。 只有一个相关的选项是delaycompress延迟压缩一个日志旋转周期(你的情况一天)。 可能的话,您可以通过编写一个shell脚本来检查您有多less个日志文件,并压缩/解压缩所需的文件,以便使用compresscmd选项。

另一种可能性是安排一个日常的cron作业来运行一个脚本来检查你的日志文件并压缩/解压你想要的。