Como borrar archivos antiguos de una carpeta en linux de forma recursiva

Tutorial en donde te explicamos uno de los métodos para borrar archivos y capetas con mas de X días de antigüedad en tu computador o servidor Linux. Con estos sencillos pasos puedes automatizar esta tarea que es indispensable en algunos casos...........
Publicado
Actualizado
Engagements 0 Comentario

Aveces tenemos que borrar archivos antiguos de nuestro disco en linux para ahorrar espacio, el caso mas común es el sistema de backups, que algunas veces necesitamos solo mantener los últimos X días en nuestro disco e ir rotando (borrando) los archivos.

Vamos a ver en detalle como logramos realizar esta tarea

Buscar los archivos antiguos

Primero vamos a buscar todos los archivos que tengan mas de 8 días en nuestra carpeta /home/backups

find /home/backups -type f -mtime +8

El anterior comando nos lista todos los archivos con más de 8 días de creación en nuestro disco. Si queremos filtrar por extensión (Formato o tipo de archivo) podemos realizar la siguiente modificación al comando

 

Recuerda que puedes cambiar el número 8 por los el que desees, este número representa la cantidad de días que deseas filtrar. 

Buscar archivos antiguos por extensión

find /home/backups -name "*.png" type f -mtime +8

Como vemos en el ejemplo, buscamos todos los archivos con más de 8 días de antigüedad con extensión .png en nuestro disco (carpeta  de backups). Ahora si necesitamos agregar mas de una extensión simplemente la agregamos de la siguiente manera

Buscar archivos antiguos por varias extensiones

find /home/backups -name "*.png" -o -name '*.jpg' -type f -mtime +8

Como vemos en el ejemplo, buscamos todos los archivos .png y .jpg con más de 8 días de antigüedad.

Ya sabiendo esto procedemos a agregar el nuevo comando para borrar los archivos archivos mas viejos.

Recuerda probar antes de ejecutar el comando de borrado que si se estén listando los archivos correctos.

Buscar archivos y borrarlos automáticamente

Usaremos el ultimo ejemplo, para borrar todos los archivos simplemente agregamos xargs rm a nuestra salida del comando anterior. Veamos el ejemplo

find /home/backups -name "*.png" -o -name '*.jpg' -type f -mtime +8 | xargs rm

Con el anterior comando ya logramos borrar todos los archivos que tengan mas de 8 días de creación de forma recursiva en nuestro sistema

Borrar carpetas vacías

Como plus, veamos como borrar las carpetas (folders) vacías de nuestro sistema, ya que después de haber borrados los archivos puede ser necesario borrar las carpetas en donde estaban esos archivos. Para este ejemplo veamos el siguiente escenario:

Estamos guardando los backups en una ruta con la siguiente estructura:

/home/backups/<AÑO>/<MES>/

Para borrar las carpetas que puedan quedar vacías despues de borrar los archivos solo ejecutamos el siguiente comando:

find /home/backups -empty -type d -delete

Listo, con eso podemos concluir este pequeño tutorial, espero que les sea de mucha utilidad.

 

Comentarios