Как эффективно переименовать и сжать старые журналы после включения сжатия в logrotate?
Недавно я включил сжатие в logrotate.conf на нескольких системах. Старые несжатые журналы все еще остаются со своей старой нумерацией. Я хочу запустить скрипт, чтобы поместить эти старые журналы, где они будут численно в ротации, если сжатие не было включено. Эти журналы будут включать messages
, boot.log
, spooler
, и другие.
[user@test ~]$ ls -ltr /var/log/messages*
-rw------- 1 root root 283380 Jan 22 03:49 /var/log/messages.4
-rw------- 1 root root 212641 Jan 29 03:59 /var/log/messages.3
-rw------- 1 root root 278964 Feb 5 04:01 /var/log/messages.2
-rw------- 1 root root 7828 Feb 16 04:02 /var/log/messages.7.gz
-rw------- 1 root root 12417 Feb 17 04:02 /var/log/messages.6.gz
-rw------- 1 root root 2289 Feb 18 04:02 /var/log/messages.5.gz
-rw------- 1 root root 2135 Feb 19 04:02 /var/log/messages.4.gz
-rw------- 1 root root 2138 Feb 20 04:02 /var/log/messages.3.gz
-rw------- 1 root root 2403 Feb 21 04:02 /var/log/messages.2.gz
-rw------- 1 root root 2339 Feb 22 04:02 /var/log/messages.1.gz
-rw------- 1 root root 8496 Feb 22 10:19 /var/log/messages
Если бы я переименовал их вручную, я бы сделал mv messages.2 messages.8.tmp
для каждого журнала, чтобы ни один файл с именем messages.8 не был перезаписан. После того, как все файлы были переименованы, я бы сделал mv messages.8.tmp messages.8
с последующим gzip -9 messages.8
,
Я играл с циклами for и while и sed, но я все еще начинающий сценарист.
Числа для самых последних и самых старых несжатых журналов будут варьироваться от системы к системе.
В будущем я буду сжимать старые журналы перед включением сжатия в logrotate.conf.
В итоге два вопроса:
- Есть ли способ заставить logrotate.conf распознавать эти старые файлы и сжимать их самостоятельно?
- Каков наилучший способ сценария ручного поворота туда, где старые файлы журналов будут последовательно, с последующим сжатием?
2 ответа
Насколько я знаю, logrotate не может поместить старые файлы на их место. Так что вам нужно сделать это вручную / маленьким скриптом.
Обратите внимание, что в зависимости от вашей конфигурации, logrotate вращает старый файл журнала только в течение ограниченного времени, а затем удаляет их. Поэтому восстановление старых файлов резервных копий может быть бесполезным, пока вы не измените конфигурацию logrotate, чтобы она никогда не удаляла старые журналы (переменная конфигурации rotate
).
Поворот журнала не может не gzip messages.?
с этим справлюсь.