У меня есть каталог журнала, в который вписывает мое приложение. Это создает файл журнала как это:
2015-01-22-10-full-activity.log
2015-01-22-11-full-activity.log
2015-01-22-12-full-activity.log
2015-01-22-13-full-activity.log
Я хочу сжать каждый файл кроме последнего файла и удалить любой файл, более старый, чем 3 дня.
Я думал, что logrotate сможет сделать это для меня, но я не могу постигнуть его, и потенциально это - потому что я называю свой журнал операций со временем на его имя.
Какие-либо идеи?
Если вы вы уже создаете файлы с датой в имени, logrotate - не ответ; он основан на идее о том, что приложение всегда записывает в один и тот же файл журнала (например, /var/log/app/output.log), а затем logrotate заботится о переименовании / сжатии файлов и сообщает приложению повторно открыть файл снова исходный целевой файл.
В этом случаевозможно, пара заданий cron, использующих «find» с -mtime, например :[1284 sizes1 0 * * * root find /path/to/logs/*.log -mtime +1 -daystart -exec gzip {} \;
2 0 * * * root find /path/to/logs/*.log.gz -mtime +3 -daystart -delete
Вы можете повозиться с числами в -mtime и использовать -daystart (или нет), чтобы получить желаемые результаты (зависит от того, как вы хотите считать «количество дней» и т. д.)