使用logrotate只压缩和删除旧文件而不旋转

Cha*_*ali 6 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
}
Run Code Online (Sandbox Code Playgroud)

执行2次logrotate后,结果如下:

abc.log.2019-05-20。gz.1.gz

abc.log.2019-05-21.gz.1

abc.2019-05-22.gz

压缩和旋转的文件将被再次压缩。

有人可以告诉应该使用的文件名的确切正则表达式模式吗

Wal*_*r A 2

代替

/var/log/management/abc.log.*[!.gz]
Run Code Online (Sandbox Code Playgroud)

/var/log/management/abc.log.*[0-9]
Run Code Online (Sandbox Code Playgroud)

dateext与空的组合dateformat是避免文件名中出现额外数字的好方法!
当其他人找到这个答案时,下一行很重要:

nocreate
Run Code Online (Sandbox Code Playgroud)

如果您想在 60 天后删除这些文件,请使用

postrotate
   find /var/log/management -name "abc.log.*gz" -type f -mtime +60 -exec rm -f {} \;
endscript
Run Code Online (Sandbox Code Playgroud)