HARDWARE Y SISTEMAS OPERATIVOS, GNU/Linux, Windows, Mac > GNU/Linux, Unix, *BSD and Free Software, Android
Borrado automático de archivos con una determinada antigüedad
(1/1)
Decodecoding:
Hola,
Tengo una carpeta en mi server (Debian Squeeze) donde van depositándose capturas de imágenes (.jpg) que me gustaría que se fueran borrando automáticamente una vez alcanzasen una determinada antigüedad.
¿Cómo podría ser ese script para meter en el cron? ¿Cómo filtro el parámetro de fecha de creación de los archivos?
Muchas gracias.
shicefgo:
Hola.
Puedes intentarlo usando find.
El siguiente ejemplo listará todos los archivos del directorio actual con la fecha de último acceso de hace 30 o más días:
--- Código: ---find ./ -mtime +30 -exec ls -l '{}' \;
--- Fin del código ---
Naturalmente que puedes sustituir ls -l por rm -f, pero guarda una copia si hay algo que no te gustaría perder hasta que estés seguro de que funciona como quieres.
Y ojo, que el comando 'find' también actúa en las carpetas que estén dentro de la indicada en el primer parámetro.
http://www.expertosdelinux.com/linux-programas/8-eliminar-archivos-por-fecha-en-linux
http://www.alejandroarco.es/administracion-de-sistemas/linux/borrar-ficheros-por-fecha-en-linux/
Un saludo.
Decodecoding:
Muchas gracias!
Voy a hacer unas pruebas sobre un directorio de test a ver como lo ajusto a mis necesidades exactas.
Investigaré la manpage de find para entender todos esos parámetros.
shicefgo:
--- Cita de: Decodecoding en 16 de Octubre de 2012, 08:32:49 pm ---
Investigaré la manpage de find para entender todos esos parámetros.
--- Fin de la cita ---
Bueno, alguna pista te puedo dar.
El primer parámetro es siempre el directorio a partir del cual find empezará a buscar.
-mtime indica que tenga en cuenta la antigüedad del archivo en días según el número que sigue, en este caso a partir de 30.
-exec es para ejecutar el comando que sigue a continuación con cada archivo que encuentre, en el ejemplo el comando es 'ls -l'.
las llaves ({}) son para situar entre ellas, digamoslo así, cada archivo que está siendo procesado. Las comillas aseguran que las llaves no son interpretadas como parte de algún comando.
El punto y coma viene a decir que "aquí termina la línea del comando", pero se "escapa" con la barra invertida también por si acaso pudiese ocurrir alguna interpretación no apropiada, más o menos de la misma forma que con las llaves.
El uso más habitual de find es para buscar archivos. Por ejemplo, no te acuerdas del nombre exacto pero sabes que contiene la cadena 'time', pues sería algo así:
find / -name *time* -print
Eso te listará todos los archivos del sistema que contengan en su nombre la cadena "time", path incluido.
Saludos.
Decodecoding:
De nuevo gracias por la ayuda.
Navegación
Ir a la versión completa