Script bash para procesar archivos según dias de antigüedad

Con este artículo hoy comienzo con una mini maratón de breves artículos referentes a comandos de consola y a scripts shell que pueden llegar a ser útiles en ciertas ocasiones.

También estaré experimentando con embeber código mediante Github Gists, ya que Syntax Highlighter ya no me convence del todo. Ahora bien, como Gist es un servicio "gratuito", tampoco se puede garantizar de que sea eterno, así que siempre dejaré copias de seguridad de los scripts en el propio contenido de los artículos de forma oculta.

Comenzamos por un script que nos permite buscar los archivos por tiempo de antigüedad para ser borrados. A continuación va el código disponible en mi Gists:
#!/bin/bash
# OBS VARIABLE FILES_LIFE_TIME: Cuando el valor es 1, los archivos a ser eliminados son
# los que tienen una antiguedad mayor a 48 horas, si el valor de la variable es 2, los
# archivos que seran eliminados seran aquellos con una antiguedad mayor a 72 horas, y
# si por ejemplo el valor de la variable es cero 0, los archivos eliminados seran
# aquellos cuya antiguedad sea mayor a 24 horas en existencia.

PATH_ARCHIVES_LOCAL=/backups
FILES_LIFE_TIME=2

# Ejecucion del comando de limpieza
find $PATH_ARCHIVES_LOCAL/*.arc -mtime +$FILES_LIFE_TIME -exec rm {} \;
El script básicamente lo que hace con la configuración de ejemplo actual es buscar todos los archivos cuyo nombre concuerde con el patrón *.arc en el directorio definido en la variable PATH_ARCHIVES_LOCAL que tengan una antigüedad superior o igual a 72 hs, osea, tres días.

Esto lo suelo utilizar muy a menudo como por ejemplo para mantener a raya la cantidad de copias de seguridad históricas generadas a partir de base de datos, logs, etc., a fin de evitar que consuman toda la cuota de espacio reservada para el almacenamiento de los backups, especialmente en equipos NAS.

Enlaces

Comentarios