logrotate komprimiert nur die letzten n Protokolle

logrotate komprimiert nur die letzten n Protokolle

Ich muss eine tägliche Rotation von /var/log/messages durchführen, die 60 Tage lang aufbewahrt werden soll, wobei die letzten 30 Protokolle mit bzip2 komprimiert werden müssen.

Dies ist meine Logrotate-Konfiguration:

/var/log/messages {                                                                                              daily
    rotate 60
    postrotate
    /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true    
    endscript 
}

Das Ergebnis ist jedoch, dass die letzten 60 täglichen, nicht komprimierten Protokolle gespeichert werden. Wenn Sie hinzufügen compress, werden alle 60 Protokolle komprimiert.

Gibt es eine Möglichkeit, NUR die letzten 30 Protokolle zu komprimieren?

Antwort1

Ich glaube, es gibt keine solche Option für Logrotate, um dies direkt zu tun. Nur eine relevante Option ist, delaycompressdie Komprimierung um einen Logrotation-Zyklus zu verzögern (in Ihrem Fall einen Tag). Möglicherweise können Sie die Option nutzen, compresscmdindem Sie ein Shell-Skript schreiben, um zu prüfen, wie viele Logdateien Sie bisher haben, und die gewünschten Dateien zu komprimieren/dekomprimieren.

Eine andere Möglichkeit besteht darin, einen täglichen cronJob zur Ausführung eines Skripts zu planen, das Ihre Protokolldateien überprüft und die gewünschten Dateien komprimiert/dekomprimiert.

verwandte Informationen