Necesito hacer una rotación diaria de /var/log/messages para conservarla durante 60 días, donde los últimos 30 registros deben comprimirse con bzip2.
Esta es mi configuración de logrotate:
/var/log/messages { daily
rotate 60
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
pero el resultado es mantener los últimos 60 registros diarios no comprimidos. Si agrega compress
, se comprimirán los 60 registros.
Entonces, ¿hay alguna manera de hacer que comprima SÓLO los últimos 30 registros?
Respuesta1
Creo que no existe esa opción para que logrotate lo haga directamente. Solo una opción relevante es delaycompress
retrasar la compresión en un ciclo de rotación de registros (un día en su caso). Posiblemente, pueda hacer uso de la compresscmd
opción escribiendo un script de shell para verificar cuántos archivos de registro tiene hasta el momento y comprimir/descomprimir los archivos que desee.
Otra posibilidad es programar un cron
trabajo diario para ejecutar un script para verificar sus archivos de registro y comprimir/descomprimir lo que desee.