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
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 {} \;
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]* \*.sql -mtime +1
find /var/log/[a-z]* \*.sql -mtime +1
Lo mismo que en el segundo caso, si queremos eliminar los archivos devueltos por el comando anterior:
find /var/log/[a-z]* \*.sql -mtime +1 -exec rm {} \;
find /var/log/[a-z]* \*.sql -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
No hay comentarios:
Publicar un comentario