Queria compartir con vosotros este script que he tenido que hacer en el trabajo. Supongamos que tenemos un cron que hace copias de seguridad de algo en una carpeta, y que se van acumulando las copias. Puede que nos interese que las copias que tengan más de por ejemplo 3 meses sean borradas para no ocupar espacio tontamente.
Este script lo que hace es dejar N archivos más recientes en una carpeta, el resto los borra. N lo podemos indicar nosotros, la sintaxis del script es:
borrar_sobrantes.sh 10 /media/backups/cron/
Y dejaria los 10 archivos más recientes que se hallen en la carpeta " /media/backups/cron/"
El script en cuestión es este:
borrar_sobrantes.sh
Código: Seleccionar todo
#!/bin/sh
# Este script nos permite dejar el numero de archivos que se le indiquen en una carpeta conservando los que sean m? nuevos, el resto seran eliminados.
#comprobamos que se le hayan pasado 2 parametros al script
if [ $# -eq 2 ]; then
num_max_archivos=$1 #El numero m?imo de archivos que se van a conservar en la carpeta
carpeta=$2 #La carpeta en la que se van a borrar los archivos sobrantes
if [ -d $carpeta ]; then
total_archivos=`ls $carpeta|grep "" -c`
#comprobamos que $total_archivos sea mayor que $num_max_archivos para borrar los sobrantes
if [ $total_archivos -gt $num_max_archivos ]; then
resta=`expr $total_archivos - $num_max_archivos`
for i in `ls -t $carpeta|tail -n $resta`;
do
echo Borrando "$carpeta$i";
rm -rf "$carpeta$i"
done
else
echo El numero maximo de archivos es $num_max_archivos y es menor o igual que el total de archivos que hay en esta carpeta $total_archivos.
fi
else
echo La carpeta $carpeta no existe.
fi
else
echo La sintaxis de este comando es la siguiente:
echo borrar_sobrantes.sh [num_max_archivos] [ruta_donde_estan_los_archivos]
echo
echo Ejemplo:
echo borrar_sobrantes.sh 4 /media/backups/cron/
fi
