jueves, 12 de diciembre de 2019

Linux: Batch para borrar archivos con ciertos dias de antiguedad.

Hay ocaciones que deseamos que en un directorio se mantengan los archivos con ciertos dias de antiguedad, por ejemplo.

Tenemos un script que saca el respaldo de la base de datos de PostgreSQL, este se deposita todos los dias en un directorio llamado:

/opt/respaldos

Si lo olvidamos nuestro sistema se llenara y tendremos problemas, ahora en esa ruta el sistema de respaldo llamado Bacula viene todos los dias y toma los archivos nuevos y los respalda, asi tenemos respaldo del respaldo, la base de datos es oro.

Ahora no tenemos espacio infinito, ni google solo que ellos tienen mucho mas :-). Necesitamos un batch que se ejecute 1 vez a la semana y su tarea es eliminar todos los archivos que tengan mas de N dias en sistema.

Por ejemplo, yo quiero borrar todos los archivos con mas de 30 dias en sistema todos los lunes a las 11:59PM , como quedaria mi batch?

#!/bin/sh
#2019-12-12 pmoreno@
#Batch para eliminar archivos con
#N numero de dias

#Archivos mayores a DIAS seran borrados.
DIAS=30

#Nos movemos a el directorio donde se localizan los archivos que deseamos borrar.
cd /opt/respaldos

#Ejecutamos la instruccion.
find ./* -mtime +$DIAS -exec rm {} \;

Recuerden darle el atributo de ejecucion.

chmod +x purga_bak.sh

Y posteriormente asi quedaria en cronjob:

59 23 * * 1 /root/batch/purga_bak.sh

Con esto solo mantendre mi directorio con archivos de maximo 30 dias, todo lo demas se borra y garantizo que mi sistema no se llenara muy pronto calculando ademas que hay espacio aunque crezca la base de datos.

Asi que a purgar sus directorios, no se te olvide visitar mi canal en youtube para seguir aprendiendo conmigo.


pmoreno@ hasta pronto, saludos!!!

No hay comentarios:

Publicar un comentario