Mi objetivo es mantener los archivos de registro de 4 días para que, al quinto día, se cree un archivo zip con los cuatro archivos de registro. Se eliminan los cuatro archivos de registro creados hasta el momento.
Este es mi logrotate.conf
:
/home/ubuntu/logs/server.log {
daily
missingok
rotate 5
compress
create
dateext
dateyesterday
dateformat .%Y-%m-%d
extension .gz
}
Tengo una crontab
entrada como:
2 0 * * * /usr/sbin/logrotate /home/ubuntu/logrotate.conf --state /home/ubuntu/logrotate.state
Veo un archivo zip para el quinto día junto con archivos vacíos de los cuatro días anteriores y cuatro archivos zip más de los archivos vacíos.
¿No se rotate 5
supone compress
que eso significa eliminar los 4 archivos anteriores después de comprimirlos en un solo archivo y comprimirlos?
Respuesta1
rotate
y compress
son independientes. compress
comprime cada archivo de registro rotado y rotate
establece cuántos archivos de registro rotados se conservarán. Usarlos juntos no significa que los archivos de registro rotados se combinen y compriman.
Lo que podrías hacer es usar un post-rotate
script como este:
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 sobrescribir el último archivo de registro)
Dicho esto, extension .gz
es inútil a menos que sus archivos de registro realmente tengan una .gz
extensión.