Recentemente, ativei a compactação no logrotate.conf em vários sistemas. Os logs descompactados antigos ainda permanecem com a numeração antiga. Estou procurando executar um script para colocar esses logs antigos onde estariam numericamente na rotação se a compactação não tivesse sido ativada. Esses logs incluem messages
, boot.log
, spooler
, e outros.
[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
Se eu fosse renomear manualmente, faria um mv messages.2 messages.8.tmp
para cada log para que nenhum arquivo atualmente nomeado messages.8 seja substituído. Depois que todos os arquivos foram renomeados, eu faria um mv messages.8.tmp messages.8
seguido de um gzip -9 messages.8
.
Eu brinquei com loops for e while e sed, mas ainda sou um roteirista novato.
Os números dos logs não compactados mais recentes e mais antigos variam de sistema para sistema.
No futuro, compactarei manualmente os logs mais antigos antes de ativar a compactação no logrotate.conf.
Em resumo, duas perguntas:
- Existe uma maneira de o logrotate.conf reconhecer esses arquivos mais antigos e compactá-los por si só?
- Qual é a melhor maneira de script a rotação manual para onde os arquivos de log antigos seriam seqüencialmente, seguidos de compactação?