Borrar archivos o ficheros por fecha (antigüedad) find
Cuando administramos servidores es muy común que se anden llenado de archivos innecesarios y que estos vayan creciendo y ocupando un espacio importante en los servidores. También ante un ataque de hacker puede ser necesario borrar archivos por antigüedad.
En el ejemplo que voy a citar se trata de borrar archivos con más de 100 días de antigüedad y hay un comando que hace esta tarea, el mismo se llama find.
find /ruta -name «*.xxx» -atime +100 -type f -print -exec rm {} \;
Explicando un poco este comando lo que se hace es:
find /ruta -name «*.xxx» :Buscar en la carpeta todos los archivos que coincidan con la cadena «*.xxx» (el asterisco * significa todo),
-atime +100 : Además que los que archivos buscados tengan fecha de creación de 100 días.
-print : Para que muestre en pantalla lo que encuentre.
-exec rm {} \; : exec permite ejecutar un comando para que aplique sobre los archivos encontrados, en este caso rm para removerlos.
El comando find nos permite ejecutar cualquier otro comando, reemplazando {} por cada línea que devuelva el comando find.
En el ejemplo a continuación voy a borrar archivos por fecha, con una antigüedad mayor a 180 días desde la fecha actual (el número de días variará según las necesidades de cada uno).
1# Borrar ficheros por fecha con más de 180 días de antigüedad
- find /home/carpeta -name «*correo*» -atime +180 -type f -print -exec rm {} \;
Además, en el ejemplo anterior se eliminan todos los ficheros (no directorios) que estén contenidos dentro de la carpeta “/home/carpeta” (incluidas subcarpetas) que contengan la cadena “correo” en el nombre del fichero y que tengan una antigüedad superior a 180 días.
Pueden investigar más sobre el comando find con «find man» desde la consola de Linux.
Comment (1)
Hola.
Creo que en vez de usar atime, responde mejor con mtime, ya que atime busca por fecha de acceso, mientras que mtime busca por modificacion, lo que incluye la creacion del archivo.
saludos