Este es un script que escribí para eliminar cualquier archivo en un sitio ftp remoto de más de 7 días. Funciona al recuperar una lista del directorio, analizar la fecha de modificación y luego volver a conectarse para eliminar cualquier archivo anterior a ndays.
Sospecho que los números codificados en el bucle (fecha del elemento) pueden cambiar dependiendo de la configuración de su sistema. El formato de retorno del comando ls depende de la configuración del sistema local.
Suponiendo que sus copias de seguridad se realicen todos los días, la configuración de ndays a 10 podría resolver su problema.
#!/bin/bash
# get a list of files and dates from ftp and remove files older than ndays
ftpsite="ftp.yourserver.com"
ftpuser="loginusername"
ftppass="password"
putdir="/public_ftp/admin/logs"
ndays=7
# work out our cutoff date
MM=`date --date="$ndays days ago" +%b`
DD=`date --date="$ndays days ago" +%d`
echo removing files older than $MM $DD
# get directory listing from remote source
listing=`ftp -i -n $ftpsite <<EOMYF
user $ftpuser $ftppass
binary
cd $putdir
ls
quit
EOMYF
`
lista=($listing)
# loop over our files
for ((FNO=0; FNO<${#lista[@]}; FNO+=9));do
# month (element 5), day (element 6) and filename (element 8)
#echo Date ${lista[`expr $FNO+5`]} ${lista[`expr $FNO+6`]} File: ${lista[`expr $FNO+8`]}
# check the date stamp
if [ ${lista[`expr $FNO+5`]}=$MM ];
then
if [[ ${lista[`expr $FNO+6`]} -lt $DD ]];
then
# Remove this file
echo "Removing ${lista[`expr $FNO+8`]}"
ftp -i -n $ftpsite <<EOMYF2
user $ftpuser $ftppass
binary
cd $putdir
delete ${lista[`expr $FNO+8`]}
quit
EOMYF2
fi
fi
done
¡Muy bonito! Pero, ¿por qué te desconectas y vuelves a conectar los archivos? Deja la conexión abierta. – dotancohen
Excelente script gracias :) pero tengo un error "value too great for base (el token de error es" 08 ")" cuando $ DD es 0x se interpreta como x en octal (problema para 8 y 9) – jsan
'eliminación de archivos más antiguos que Jul 06 Tratando Fecha ftp 12672814 del archivo: 7 Fecha ftp 12672913 del archivo: 1 Fecha ftp 12672889 del archivo: 7 Fecha ftp 1099121178 del archivo: 7 Fecha ftp 1099121165 del archivo: 1 Fecha ftp 1099121206 del archivo: 7 Fecha del archivo : Eliminando Probando 62.210.17.5 ... (archivo remoto) No se pudo eliminar salir: No existe tal archivo o directorio' – Ghayel