Comprimir archivos de registro antiguos y moverlos a un nuevo directorio

Comprimir archivos de registro antiguos y moverlos a un nuevo directorio

Tengo una carpeta /home/usr/logs/que contiene archivos de registro que tienen más de 1 día. Deseo comprimir todos los archivos de registro de más de un día para separar archivos comprimidos (por ejemplo, zip o tar.gz) y moverlos a la carpeta /home/usr/logs/archive.

Los archivos de registro están en formatos de nombres, como valid.app5s.log.1019, app5s.gf3sts.1019, valid.app5s.gf3log.1019, app5s.gf3log.1019, app5s.gf1sts.1019, valid.app5s.gf1log.1019, app5s.sts.1019.

Lo intenté así:

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

Pero esos archivos no están comprimidos correctamente. ¿Alguien podría ayudarme a descubrir el error de mi código?

Respuesta1

logrotate puede hacer esto, la coincidencia de patrón puede ser para *log, luego agrega una sección llamada "postrotate", considere postrotate como un pequeño script bash que se ejecuta después de la rotación.

ejemplo;

/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
}

ACTUALIZACIÓN1:

si desea utilizar zip en lugar de gzip, agregue;

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

información relacionada