X
    Categorías: Linux

Linux: Borrar archivos backup mas viejos de 7 dias

Linux: script para borrar archivos backup mas viejos de 7 dias

Llevaba un tiempo queriendo dejar un poco mejor hecho el tema de los backups del blog para evitar quedarme colgado sin un backup en condiciones y no sabía como hacer para evitar llevar el disco de copias viejas y llegar al punto de que el vps me diera error  por no tener suficiente espacio.

Había probado varios scripts para hacer backup pero la mayoría de ellos eran sencillos para generar los ficheros de las copias, pero no se encargaban de borrar los archivos de backup de mas de X días, con el fin de tener siempre alguna copia fresca y borrar las ya viejas, la base de datos es posible dejar mas días de copia ya que de momento, ocupa muchísimo menos.

Para aquellos que quieran borrar archivos de backup (la verdad es que puede ser para cualquier tipo de archivo, pero en mi caso, como estoy con los backups) que sean mas viejos de X días, la linea de comando a ejecutar es:

find /home/user/backups/backup* -mtime +7 -exec rm {} \;

En el comando anterior, con «find» localizamos los archivos que tengan de fecha «-mtime»  que sean mas viejos de 7 días «+7» y ejecuta la orden de consola de borrado de los ficheros mostrados en el resultado del anterior comando «-exec rm {}».

De esta manera garantizamos que nuestro directorio de backups no engorde y nos ocupe el sitio que tenemos contratado con para el alojamiento y evitar el fallo del servidor por falta del mismo.

Para poder automatizar la ejecución de dicho script, y no necesitar ejecutarlo manualmente cada día o cada X días, podemos añadirlo al cron (si nuestro hosting lo permite) y así lanzarlo a ciertas horas para así hacerlo sin tener que controlarlo, para ello, podemos añadir al cron la siguiente linea:

0 4 * * * find /home/user/backups/backup* -mtime +7 -exec rm {} \;

De esta manera, a las 4:00 am se ejecutará solo y siempre tendremos las copias preparadas y sin pasar de los días que queramos.

Eduardo Ruiz: Informático de vocación, apasionado de la tecnología y blogger desde hace mucho tiempo, escribo de lo que me entretiene y disfruto con ello. Si deseas seguirme, usa el rss del blog o en mi perfil de .

Ver comentarios (8)

  • Muchas gracias!!!! muy bueno me salvaste te dejo el comando si lo que se quiere hacer es moverlos:
    "find /directorio origen/* -mtime +7 -exec mv -t /directorio destino {} +"

  • una cosa a tener en cuenta es que con esto borras a x días atras, pero no borras el primer dia completo. Borra del primer día de la hora en la que nos encontramos hacia atrás.

    Por lo que cuando trabajamos con procesos diarios con dependencias horaria esto no es correcto del todo.

    Como dice en la explicación con el comando anterior, con “find” localizamos los archivos que tengan de fecha “-mtime” que sean mas viejos de 7 días “+7” y ejecuta la orden de consola de borrado de los ficheros mostrados en el resultado del anterior

    Pero esos 7 días son desde la hora en la que ejecutamos, por ejemplo si lo lanzas a las 17:00, recuperará los ficheros anteriores a 7 días, contando 7 días desde las 17:00 de un dia a otro, por lo que borrara de las 17:00 hacia atrás hacia atrás.