我想压缩一些名称格式为abc.log.yyyy-MM-dd的日志文件,然后在x天后删除压缩的日志文件(abc.log.yyyy-MM-dd.gz)。我不希望logrotate旋转文件(即创建新文件),我只希望它在x天后压缩并删除压缩文件。
我尝试使用这种模式来仅压缩文件:
压缩文件:
/var/log/management/abc.log.*[!.gz]
su x y
daily
nocreate
missingok
compress
dateext
dateformat
rotate 6 #If I don't provide this parameter, files are deleted as soon as they
are compressed
}
To delete compressed files after x days:
/var/log/management/abc.log.*.gz* {
su x y
daily
rotate x
maxage x
}
2次执行logrotate之后,结果如下:
abc.log.2019-05-20。1.gz
abc.log.2019-05-21.gz.1
abc.2019-05-22.gz
压缩和旋转后的文件再次被压缩。
有人能告诉我应该使用的文件名的确切正则表达式模式吗
答案1
代替
/var/log/management/abc.log.*[!.gz]
和
/var/log/management/abc.log.*[0-9]
dateext
您将和 空值组合起来dateformat
是一种很好的方法,可以避免在文件名中添加额外的数字!
当其他人找到这个答案时,下一行很重要:
nocreate
当你想在 60 天后删除这些文件时,使用
postrotate
find /var/log/management -name "abc.log.*gz" -type f -mtime +60 -exec rm -f {} \;
endscript