martes, 7 de septiembre de 2010

Buscar y borrar archivos al mismo tiempo

En mi trabajo me asignaron como tarea la creación de un cron para el respaldo de algunos archivos y el borrado de otros.

La tarea del cron no presentaba ninguna complicación, lo interesante de la tarea surge cuando debo el cron debe localizar unos archivos (logs) que se genera un aplicativo instalado en el servidor y que deben ser borrados para liberar espacio conservando únicamente los últimos 3 días.

Esta tarea se empezó a llevar de forma manual hasta que me dí a la tarea de buscar en internet alguna herramienta que de una u otra forma me permitiera automatizar dicho proceso y no tuve que buscar mucho, encontre un comando que en conjunto con otras instrucciones me permitió hacer lo que andaba buscando.

El comando no es otro más que el find y esto fue lo que hice. La instrucción implementada fue esta:

[abc@home]$ find /opt/sfs/logs -type f ( ! -name '*tar' -a ! -name 'bk_*' ) -atime +3 -exec rm {} \;

Lo que hace dicha instrucción es busque y borre de la ruta /opt/sfs/logs los archivos cuyo nombre terminen en tar o inicien con bk_ y que tengan más de 3 días de antigüedad.

La instrucción debe usarse con mucho cuidado pues no te preguntará si realmente quiere borrar los archivos, simplemente lo que coincide con el criterio de búsqueda lo borra.

Estas son otras opciones que se pueden agregar a este tipo de instrucciones:

-type d/f/l Especifica que es un directorio (d) / fichero (f) / enlaces (l)
-name "Do*****ents" Lo que buscamos (Distingue entre mayusculas y minusculas)
-iname "Resumen" Lo que buscamos (NO distingue entre mayusculas y minusculas)
-print Que lo muestre por pantalla (No suele ser necesario)
-size +10k Que sea superior a 10 Kb
-atime +5 Que se haya accedido hace 5 dias
-exec Ejecuta una comando ... -exec cp {} /tmp ; --> {} --> Archivos de la busqueda
-ok Ejecuta un comando (Pide confirmacion) --> -ok cp {} /tmp ;
-user usuario Filtra por dueño de directorio/archivo
-group grupo Filtra por grupo

Puedes encontrar información relacionada en:
Respecto de las marcas de tiempo en linuxtotal.com.mx
Respecto al comando find y sus opciones luchoedu.org