carlosrasppi
Posts: 5
Joined: Sun Nov 30, 2014 5:51 pm

Eliminar archivos cada x días

Sun Nov 30, 2014 5:57 pm

A ver si alguien me puede echar un cable.

Tengo una raspberry con un disco duro que cumple como ftp. Hay una cámara ip de seguridad que guarda fotos en el disco duro de la raspberry cuando detecta movimiento. Lo que pretendo es que la raspberry borre del disco duro las fotos que tengan más de x días de antigüedad. Por ejemplo, cada día a las 12 de la mañana de forma automática compruebe las fotos que hay en el disco duro, y si tienen mas de x días, las borre. A ver si me podéis echar un cable, que llevo varios días buscando y no encuentro nada. Gracias de antemano, y un saludo :D.

unpeatonenlared
Posts: 306
Joined: Sun Aug 17, 2014 8:18 am
Contact: Website

Re: Eliminar archivos cada x días

Sun Nov 30, 2014 11:20 pm

Puedes comprimir las fotografías antiguas y moverlas de carpeta, o borrarlas; para finalmente vaciar el directorio donde se guardan.

Todo esto puedes hacerlo con un script que crontab ejecute diariamente, o semanalmente, por ejemplo el mas simple de los script podría ser el siguiente:

#!/bin/bash
#Borrado de las fotografías antiguas
rm -rf /home/usuario/fotoscamarapi/*
Mi blog sobre seguridad informática y Raspberry Pi:
http://www.peatonet.com

carlosrasppi
Posts: 5
Joined: Sun Nov 30, 2014 5:51 pm

Re: Eliminar archivos cada x días

Mon Dec 01, 2014 12:10 am

Gracias por la ayuda !
Una nueva duda, con rm -r le estás diciendo que elimine archivos de forma recursiva en ese directorio, pero cómo le especifico, por ejemplo, que esos archivos para ser borrados tienen que cumplir que su fecha de creación (la fecha en la que la cámara tomó la imagen) sea superior a 3 días ? Así el disco duro únicamente almacenaría imágenes de las últimas 72 horas.

unpeatonenlared
Posts: 306
Joined: Sun Aug 17, 2014 8:18 am
Contact: Website

Re: Eliminar archivos cada x días

Mon Dec 01, 2014 12:40 am

Para hacer eso deberías guardar las fotografías con la fecha en su nombre.

Un ejemplo:

foto_$(date "+%x"|tr -s "/" "_").png

Y se guardaría con el siguiente nombre:

foto_01_12_14.png

Entonces el script de borrado debería ser algo así:

*(date "+%x" --date='-3 day'|tr -s "/" "_")

Con el --date='-3day' le restas 3 días a la fecha actual, y con el * le dices que todo lo que empiece por la fecha de hace 3 días sea borrado.

Quizás te venga mejor por semanas para una mejor limpieza:

*(date "+%x" --date='-1 week'|tr -s "/" "_")

Solo te faltaría algún argumento para que borre todo lo anterior a esa fecha.

Saludos.
Mi blog sobre seguridad informática y Raspberry Pi:
http://www.peatonet.com

carlosrasppi
Posts: 5
Joined: Sun Nov 30, 2014 5:51 pm

Re: Eliminar archivos cada x días

Mon Dec 01, 2014 9:57 am

Me estas salvando la vida! Te debo una "unpeatonenlared". Gran blog por cierto ;).

Si no recuerdo mal, las imagenes se guardan en el disco duro con el siguiente formado:
IMGXXXXddmmaa.jpg sin ninguna separación.
Entonces, creo el script:

#!/bin/bash
#Borrado de las fotografías antiguas
rm -rf /home/usuario/fotoscamarapi/*(date "+%x" --date='-1 week'|tr -s "/" "_")
(Aquí mi duda es como le especifico el formato de fecha de las imagenes, ya sea ddmmaa, o mmddaa, o como sea)

Y establezco en cron con un crontab la periodicidad de ejecución.

raspdroid
Posts: 1591
Joined: Thu Nov 06, 2014 9:15 am
Location: Gran Canaria :: España

Re: Eliminar archivos cada x días

Mon Dec 01, 2014 11:37 am

Hola,

Prueba esto a ver que tal:

Code: Select all

find /ruta/al/directorio/de/las/imagenes -iname '*.jpg' -type f -ctime +2  -delete
Eso debería de encontrar los archivos de más de 3 días y borrarlos. Así de sencillo.

Saludos

unpeatonenlared
Posts: 306
Joined: Sun Aug 17, 2014 8:18 am
Contact: Website

Re: Eliminar archivos cada x días

Mon Dec 01, 2014 2:35 pm

La opción que comenta raspdroid es mas rápida y limpia, pero antes de utilizarla deberías comprender cada argumento que estás añadiéndole al comando find para evitar problemas en un futuro.

Como digo, te recomiendo que utilices la opción que te recomienda raspdroid, pero que cuando puedas repases el man del comando find.

Saludos.
Mi blog sobre seguridad informática y Raspberry Pi:
http://www.peatonet.com

raspdroid
Posts: 1591
Joined: Thu Nov 06, 2014 9:15 am
Location: Gran Canaria :: España

Re: Eliminar archivos cada x días

Mon Dec 01, 2014 4:01 pm

Lo que ocurre es que a mí no me borra archivos de más de 24 horas, aunque puede ser porque los estoy creando con touch (y estaré haciendo mal), por eso digo que lo pruebes a ver como te va por que si le pongo 0 sin problemas pero si le pongo +2 que se supone que es 3*24horas segun la doc de -ctime.

Para hacer pruebas le pongo la fecha así -> touch -d "nov 25 11:00" archivo_ejemplo.jpg

Pero no me lo borra si le pongo +2, en cambio si le pongo 0 (los de las últimas 24 horas) me borra todo.
Last edited by raspdroid on Mon Dec 01, 2014 6:04 pm, edited 1 time in total.

carlosrasppi
Posts: 5
Joined: Sun Nov 30, 2014 5:51 pm

Re: Eliminar archivos cada x días

Mon Dec 01, 2014 4:18 pm

Muchas gracias por la ayuda !
A ver si en tener un rato libre pruebo lo que me sugerís y voy comentando (seguro que me salen nuevas dudas xD).

unpeatonenlared
Posts: 306
Joined: Sun Aug 17, 2014 8:18 am
Contact: Website

Re: Eliminar archivos cada x días

Mon Dec 01, 2014 6:56 pm

Raspdroid al hacer ls -l te muestran la fecha que tú le pusiste? o la real?

El problema puede estar por ahí, de todas formas touch crea archivos vacíos, pero puedes probar con:

echo hola > prueba.txt

y adelantar la hora de Raspberry con date -s para hacer la prueba.

Saludos.
Mi blog sobre seguridad informática y Raspberry Pi:
http://www.peatonet.com

raspdroid
Posts: 1591
Joined: Thu Nov 06, 2014 9:15 am
Location: Gran Canaria :: España

Re: Eliminar archivos cada x días

Mon Dec 01, 2014 7:54 pm

Tiene la que yo le puse.

Sí lo sé, crea archivos vacíos, eso pensaba yo que si era porque estaba vacío pero lo curioso es que los que borra con el 0 también están vacíos.

Y lo más curioso que borra el archivo al que le indiqué la fecha, así que debe de estar por ahí la cosa.

Pero de todas formas el comando funciona, porque lo acabo de probar en una carpeta donde tenía imágenes antiguas y funciona bien. Lo podéis probar pero hay que tener en cuenta cambiar -delete por -print para que las imprima por pantalla en vez de borrarlas.

carlosrasppi
Posts: 5
Joined: Sun Nov 30, 2014 5:51 pm

Re: Eliminar archivos cada x días

Thu Dec 04, 2014 3:41 pm

Al final por la cantidad de archivos que se acumulaban en la carpeta donde se guardan las imágenes de la cámara, obtenía un error y la cámara dejaba de grabar. Así que los archivos los muevo a otra carpeta, donde se van almacenando.

Al final en crontab he metido lo siguiente:

@hourly find /directorio/donde/se_guardan_las_imagenes -name “*.jpg” -exec mv {} /directorio/a_donde/las_muevo/ \;
@hourly find /directorio/donde/se_han_movido_las_fotos -name “*.jpg” -type f -mtime +2 -exec rm {} \;

Está aun en pruebas, pero creo que va a funcionar.

User avatar
gpio
Posts: 26
Joined: Wed Dec 03, 2014 10:19 pm
Location: Gran Canaria :: Spain

Re: Eliminar archivos cada x días

Fri Dec 05, 2014 12:59 pm

Ya nos contarás como te fue, porque a mí también me interesa la idea, porque para el proyecto que estoy haciendo necesito poner una cámara de vigilancia.

Saludos

PD: Soy raspdroid me hice una cuenta nueva con otro nick.

Return to “Español”