A grandes rasgos:
- para programar el script: cron.
- para buscar recursivamente los anteriores a una fecha: find.
- para borrarlos: opción "-exec" del mismo find de antes.
- para obtener ayuda de cualquiera de estos comandos: man.
Saludos.
Pregunta chunguísima para linuxeros
551 11
Escrito 0 0
Entre mis "proyectos" está el leerme Debes estar logueado para poder ver los enlaces. , tal vez te ayude
Un saludo
Un saludo
Nokia 6234 + SE T610(GDFS mod)
ASTURIAS
ASTURIAS
Escrito 0 0
Es muy facil, a parte de como te han dicho te daré alguna pista más, utiliza la hora en formato UNIX, que vienen a ser el numero de segundos que han pasado desde el 1 de enero de 1970 (creo).
Así será mucho más facil comparar
date +%s
Así será mucho más facil comparar
date +%s
Escrito 0 0
Vaya, parece que es mucho más sencillo que todo eso, al final se podrá hacer en una sola linea, mira esto:
(del man del find)
+n for greater than n,
-n for less than n,
n for exactly n.
-amin n
File was last accessed n minutes ago.
-anewer file
File was last accessed more recently than file was modified. -anewer is affected by -follow only if -follow comes before -anewer on the
command line.
-atime n
File was last accessed n*24 hours ago.
-cmin n
File's status was last changed n minutes ago.
-cnewer file
File's status was last changed more recently than file was modified. -cnewer is affected by -follow only if -follow comes before -cnewer
on the command line.
-ctime n
File's status was last changed n*24 hours ago.
(del man del find)
+n for greater than n,
-n for less than n,
n for exactly n.
-amin n
File was last accessed n minutes ago.
-anewer file
File was last accessed more recently than file was modified. -anewer is affected by -follow only if -follow comes before -anewer on the
command line.
-atime n
File was last accessed n*24 hours ago.
-cmin n
File's status was last changed n minutes ago.
-cnewer file
File's status was last changed more recently than file was modified. -cnewer is affected by -follow only if -follow comes before -cnewer
on the command line.
-ctime n
File's status was last changed n*24 hours ago.
Escrito (Editado ) 0 0
Na, hecho:
#!/bin/bash
dias=30
dir=$1
if [ "$dir" == "" ]; then
exit 1;
fi
find $dir -ctime -$dias -exec /bin/bash -c "rm {}" \;
Ahí tienes el script, meteló en un fichero, dale permisos de ejecución: chmod +x <fichero>
y para añadirlo al cron por ejemplo, para que se ejecute todos los dias a las 4:00 am
Haz crontab -e y añade:
00 4 * * * /path/al/script/./borrador.sh /home/dir/con/files/a/borrar
No creo que sea necesario explicar para que sirve la variable $dias
Ya me contarás, no lo he probado pero supongo que funcionará ... y si casca será por alguna tonteria de sintaxis.
(el primer parámetro que recibe es el directorio donde estan los ficheros)
Te aconsejo que para las pruebas añadas un -i a rm para que te pregunte no sea que la cagues.
Y es más, va contra todo "manual" el borrar ficheros de forma automatizada, por norma general se mueven a un directorio /home/user/basura y luego de ahí se borran de forma manual cada x tiempo
Porque puedes tener un disgustillo ... para cambiarlos ... crea el directorio antes ...
mkdir /home/user/basurero
y reemplaza:
find $dir -ctime -$dias -exec /bin/bash -c "rm {}" \;
por
find $dir -ctime -$dias -exec /bin/bash -c "mv {} /home/user/basurero" \;
Y para dejarlo chulo chulo, añade la posibilidad de enviarte un mail cuando tengas ficheros parar borrar
Un saludo.
#!/bin/bash
dias=30
dir=$1
if [ "$dir" == "" ]; then
exit 1;
fi
find $dir -ctime -$dias -exec /bin/bash -c "rm {}" \;
Ahí tienes el script, meteló en un fichero, dale permisos de ejecución: chmod +x <fichero>
y para añadirlo al cron por ejemplo, para que se ejecute todos los dias a las 4:00 am
Haz crontab -e y añade:
00 4 * * * /path/al/script/./borrador.sh /home/dir/con/files/a/borrar
No creo que sea necesario explicar para que sirve la variable $dias
Ya me contarás, no lo he probado pero supongo que funcionará ... y si casca será por alguna tonteria de sintaxis.
(el primer parámetro que recibe es el directorio donde estan los ficheros)
Te aconsejo que para las pruebas añadas un -i a rm para que te pregunte no sea que la cagues.
Y es más, va contra todo "manual" el borrar ficheros de forma automatizada, por norma general se mueven a un directorio /home/user/basura y luego de ahí se borran de forma manual cada x tiempo
Porque puedes tener un disgustillo ... para cambiarlos ... crea el directorio antes ...
mkdir /home/user/basurero
y reemplaza:
find $dir -ctime -$dias -exec /bin/bash -c "rm {}" \;
por
find $dir -ctime -$dias -exec /bin/bash -c "mv {} /home/user/basurero" \;
Y para dejarlo chulo chulo, añade la posibilidad de enviarte un mail cuando tengas ficheros parar borrar
Un saludo.
Volver a Informática