logrotate comprime solo los últimos n registros

logrotate comprime solo los últimos n registros

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 delaycompressretrasar la compresión en un ciclo de rotación de registros (un día en su caso). Posiblemente, pueda hacer uso de la compresscmdopció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 crontrabajo diario para ejecutar un script para verificar sus archivos de registro y comprimir/descomprimir lo que desee.

información relacionada