使用logrotate仅压缩并删除旧文件而不进行旋转

使用logrotate仅压缩并删除旧文件而不进行旋转

我想压缩一些名称格式为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

相关内容