Eliminar todos los archivos de registro excepto el archivo de registro actual

Eliminar todos los archivos de registro excepto el archivo de registro actual

Mi servidor SIP genera 3 archivos de registro por cada hora:

Progress-23May2017-10-00hrs.log Call-23May2017-10-00hrs.log Error-23May2017-10-00hrs.log

Entonces necesito eliminar todos los demás archivos de registro excepto el registro de la hora actual. lo intenté con este comando

 find . -type f -name "*-23May2017-10-00hrs.log" -print

imprimió los tres archivos de registro de mi tiempo actual.

Entonces, cuando probé este comando para verificar los archivos que no coincidían con el registro de tiempo actual.

find . -type f -name "!(*-23May2017-10-30hrs.log)" -print

no me aporta nada.

¿Cómo puedo eliminar mis otros archivos de registro?

Respuesta1

find /home/fi -maxdepth 1 -iname log\* -type f -mmin +1800 | sort | head -n -1 | xargs rm

Respuesta2

En primer lugar: sus procesos de búsqueda no tienen escape, por lo que los comodines *se transforman. Para evitarlo, puede utilizar barras invertidas \o comillas simples.'

Entonces: find . -type f -name '*-23May2017-10-00hrs.log' -print debería funcionar bien.

Volviendo a tus preguntas reales: hay varias formas de resolverlo. Primero, puede usar la -mtimefunción de búsqueda para escuchar cada archivo cuya última modificación fue hace x minutos. Supongamos que su servidor SIP inicia sesión en/var/log/sip/

find /var/log/sip/ -type f -name '*.log' -mmin +$((24*60)) -print le mostrará todos los archivos que terminan en .logy cuál fue la última modificación hace 24*60 minutos (1 día).

Sin embargo, también puede utilizar una herramienta diseñada para el manejo de registros y eso es logrotate.

logrotate está disponible en todas las principales distribuciones de Unix y le permite comprimir archivos a una determinada antigüedad, eliminarlos a otra, etc. La lista de funciones es bastante larga. Es fácil de instalar, se ejecuta como un demonio y no tienes que jugar con cronjobs adicionales.

Mi sugerencia es utilizar logrotate. Compruebe su simplicidad en:https://linux.die.net/man/8/logrotate

información relacionada