Autor Tema: Borrado automático de archivos con una determinada antigüedad  (Leído 6632 veces)

Desconectado Decodecoding

  • Junior Member
  • **
  • Mensajes: 14
Borrado automático de archivos con una determinada antigüedad
« 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.

Desconectado shicefgo

  • Member
  • ***
  • Mensajes: 166
Re:Borrado automático de archivos con una determinada antigüedad
« Respuesta #1 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.

Desconectado Decodecoding

  • Junior Member
  • **
  • Mensajes: 14
Re:Borrado automático de archivos con una determinada antigüedad
« Respuesta #2 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.

Desconectado shicefgo

  • Member
  • ***
  • Mensajes: 166
Re:Borrado automático de archivos con una determinada antigüedad
« Respuesta #3 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.

Desconectado Decodecoding

  • Junior Member
  • **
  • Mensajes: 14
Re:Borrado automático de archivos con una determinada antigüedad
« Respuesta #4 en: 17 de Octubre de 2012, 12:26:50 am »
De nuevo gracias por la ayuda.

 

Aviso Legal | Política de Privacidad | Política de Cookies

el contenido de la web se rige bajo licencia
Creative Commons License