sábado, 27 de septiembre de 2008

Eliminar archivos logs antiguos en Linux

Una tarea común de mantenimiento en los sistemas operativos Linux (y que es extensivo a la mayoría de los sistemas operativos basados o clones de Unix) es la de limpieza de archivos de logs. Tanto el sistema operativo, como algún motor de base de datos y unos cuantos procesos propios pueden generar grandes cantidades de archivos de logs. Al largo plazo, es menester quitar estos archivos pues nos ocupan espacio, ya son obsoletos y nos suelen complicar las búsqueda.
Por tal motivo, basado en la publicación original “Listar/Eliminar archivos por fechas en Linux” veamos como podemos desde el shell hacer búsquedas de archivos antiguos y eliminarlos. Está de más decir, que los comandos que a continuación se mencionan son candidatos a formar parte de un shell script y que probablemente sea ejecutado por el cron.

Bien, basta de palabras y veamos algunos ejemplos prácticos:

Buscar archivos actualizados hasta tres días atrás en el directorio actual:

cd /var/log
find -name \*.log -mtime +3

Buscar archivos actualizados hasta tres días atrás en el directorio actual y eliminarlos:
find . -name \*.log -mtime +3 -exec rm {} \;

Buscar los archivos actualizados hasta un día atrás y mostrar su ruta completa:
find /var/log/[a-z]* \*.log -mtime +1

Lo mismo que en el segundo caso, si queremos eliminar los archivos devueltos por el comando anterior:
find /var/log/[a-z]* \*.log -mtime +1 -exec rm {} \;

Además, podemos afinar algo más la búsqueda utilizando el argumento -mmin en vez de -mtime:

* -mtime n, busca archivos modificados n*24 horas atrás (n días atrás)
* -mmin n, para archivos modificado n minutos atrás.

PD: Esta linea se puede utilizar para eliminar respaldos antiguos si tenemos programado un cron de backup de una Base de datos u otros archivos como tgz. etc,

find *.tgz -mtime +6 -exec rm {} \; (eliminarias los que tienen una semana de antiguedad)


fuente (http://www.luchoedu.org/)


No hay comentarios: