Foros de daboweb

HARDWARE Y SISTEMAS OPERATIVOS, GNU/Linux, Windows, Mac => GNU/Linux, Unix, *BSD and Free Software, Android => Mensaje iniciado por: Decodecoding en 16 de Octubre de 2012, 01:13:46 pm

Título: Borrado automático de archivos con una determinada antigüedad
Publicado por: Decodecoding en 16 de Octubre de 2012, 01:13:46 pm
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.
Título: Re:Borrado automático de archivos con una determinada antigüedad
Publicado por: shicefgo en 16 de Octubre de 2012, 08:29:53 pm
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: [Seleccionar]
find ./ -mtime +30 -exec ls -l '{}' \;

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.
Título: Re:Borrado automático de archivos con una determinada antigüedad
Publicado por: Decodecoding en 16 de Octubre de 2012, 08:32:49 pm
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.
Título: Re:Borrado automático de archivos con una determinada antigüedad
Publicado por: shicefgo en 16 de Octubre de 2012, 08:50:57 pm

Investigaré la manpage de find para entender todos esos parámetros.

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.
Título: Re:Borrado automático de archivos con una determinada antigüedad
Publicado por: Decodecoding en 17 de Octubre de 2012, 12:26:50 am
De nuevo gracias por la ayuda.