Meu objetivo é manter arquivos de log de 4 dias para que, no quinto dia, seja criado um arquivo zip com todos os quatro arquivos de log. Os quatro arquivos de log criados até agora serão excluídos.
Este é 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 crontab
entrada como:
2 0 * * * /usr/sbin/logrotate /home/ubuntu/logrotate.conf --state /home/ubuntu/logrotate.state
Vejo um arquivo zip do quinto dia junto com arquivos vazios dos quatro dias anteriores e mais quatro arquivos zip dos arquivos vazios.
Não rotate 5
deveria compress
significar isso, remover os 4 arquivos anteriores depois de compactá-los em um arquivo e compactar?
Responder1
rotate
e compress
são independentes. compress
compacta cada arquivo de log girado e rotate
define quantos arquivos de log girados serão mantidos. Usá-los juntos não significa que os arquivos de log girados sejam combinados e compactados.
O que você poderia fazer é usar um post-rotate
script assim:
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
from moreutils
para substituir o último arquivo de log)
Dito isto, extension .gz
é inútil, a menos que seus arquivos de log tenham uma .gz
extensão.