Недавно я включил сжатие в 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 распознавал эти старые файлы и сам сжимал их?
- Каков наилучший способ сценария ручного поворота туда, где старые файлы журнала будут последовательно, после чего следует сжатие?