我的目标是保留 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
rotate
和compress
是独立的。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
(使用sponge
frommoreutils
覆盖最后一个日志文件)
也就是说,extension .gz
除非您的日志文件实际上有.gz
扩展名,否则它是无用的。