Использование logrotate только для сжатия и удаления старых файлов без вращения

Я хочу сжать некоторые файлы журнала, которые имеют формат имени как abc.log.yyyy-MM-dd а затем удалите сжатый файл журнала (abc.log.yyyy-MM-dd.gz) через x дней. Я не хочу, чтобы 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
}

После двух выполнений logrotate результат будет следующим:

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

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

abc.2019-05-22.gz

Сжатые и повернутые файлы снова сжимаются.

Может ли кто-нибудь указать точный шаблон регулярного выражения для имени файла, который следует использовать

0
задан 21 May 2019 в 11:14
1 ответ

Заменить

/var/log/management/abc.log.*[!.gz]

на

/var/log/management/abc.log.*[0-9]

Ваша комбинация datetext с пустым форматом даты — хороший способ избежать дополнительные цифры в имени файла!
Когда кто-то еще находит этот ответ, важна следующая строка:

nocreate

И если вы хотите удалить эти файлы через 60 дней, используйте

postrotate
   find /var/log/management -name "abc.log.*gz" -type f -mtime +60 -exec rm -f {} \;
endscript
2
ответ дан 3 June 2020 в 10:12

Теги

Похожие вопросы