Alte Logdateien komprimieren und in ein neues Verzeichnis verschieben

Alte Logdateien komprimieren und in ein neues Verzeichnis verschieben

Ich habe einen Ordner /home/usr/logs/mit Protokolldateien, die älter als einen Tag sind. Ich möchte alle Protokolldateien, die älter als einen Tag sind, in separate komprimierte Archive (z. B. zip oder tar.gz) komprimieren und sie in den Ordner verschieben /home/usr/logs/archive.

Die Protokolldateien haben Benennungsformate wie valid.app5s.log.1019, app5s.gf3sts.1019, valid.app5s.gf3log.1019, app5s.gf3log.1019, app5s.gf1sts.1019, valid.app5s.gf1log.1019, app5s.sts.1019.

Ich habe es folgendermaßen versucht:

find .  -mtime +1 -exec zip filename.zip '{}' + && mv filename.zip archive/ \;

Aber diese Dateien sind nicht richtig komprimiert. Kann mir bitte jemand helfen, den Fehler in meinem Code herauszufinden?

Antwort1

logrotate kann dies tun, die Musterübereinstimmung kann für *log sein, dann fügen Sie einen Abschnitt namens „postrotate“ hinzu, betrachten Sie postrotate als ein kleines Bash-Skript, das nach der Rotation ausgeführt wird.

Beispiel;

/home/usr/logs/*.log {
    daily
    missingok
    compress
    #delaycompress (this will prevent compressing of one day)
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
                mv /home/usr/logs/*.gz /home/usr/logs/archive/;
    endscript
}

UPDATE1:

wenn Sie Zip statt Gzip verwenden möchten, fügen Sie hinzu:

compresscmd /usr/bin/zip
compressoptions -r
compressext .zip

verwandte Informationen