logrotate arquivo semanal esvazia arquivos diários

0

Meu objetivo é manter o valor de 4 dias de arquivos de log para que, no quinto dia, um arquivo zip com todos os quatro arquivos de log seja criado. Os quatro arquivos de log criados até o momento são excluídos.

Este é o meu logrotate.conf :

/home/ubuntu/logs/server.log {
    daily
    missingok
    rotate 5
    compress
    create
    dateext
    dateyesterday
    dateformat .%Y-%m-%d
    extension .gz
}

Eu tenho uma entrada crontab como:

2 0 * * * /usr/sbin/logrotate /home/ubuntu/logrotate.conf --state /home/ubuntu/logrotate.state 

Eu vejo um arquivo zip para o quinto dia junto com arquivos vazios dos últimos quatro dias e mais quatro arquivos zip dos arquivos vazios.

Não rotate 5 e compress significam isso, remover os 4 arquivos anteriores depois de compactá-los em um único arquivo e zip?

    
por cogitoergosum 05.03.2018 / 11:46

1 resposta

0

rotate e compress são independentes. compress compacta cada arquivo de log girado, rotate define quantos arquivos de log girados devem ser mantidos. Usá-los juntos não significa que os arquivos de log girados sejam combinados e compactados.

O que você pode fazer é usar um script post-rotate da seguinte forma:

zcat /home/ubuntu/logs/server.log.*.gz |
  gzip | sponge /home/ubuntu/logs/server.log.$(date -d "now - 5 days" +%Y-%m-%d).gz

(Usando sponge de moreutils para sobrescrever o último arquivo de log)

Dito isso, extension .gz é inútil, a menos que seus arquivos de log realmente tenham uma extensão .gz .

    
por muru 05.03.2018 / 12:03