Para fazer uma porcentagem, você precisa saber o número total de arquivos.
Você pode obter isso de um ls -R
dentro de outro lftp
, iniciando no mesmo diretório que seu comando mirror
. Eu subtrai 2 para "." e ".." na listagem.
let total=$(lftp "ftp://$ftpuser:$ftppass@$ftphost" -e "$ftpsettings ;
ls -R $remotemedia; quit" | wc -l)-2
Você pode ler cada saída de linha do lftp e, para aqueles que começam com "Transferindo", você pode incrementar um contador de linha, calcular a porcentagem e usar o estilo de entrada "XXX" que --gauge
aceita (XXX, um por cento um título, XXX).
lftp "ftp://$ftpuser:$ftppass@$ftphost" -e "$ftpsettings ;
mirror -v -e $remotemedia $localmedia ; quit" |
while read word word2 filename
do if [ "$word" = Transferring ]
then let count=count+1
let percent=count*100/total
echo -e "XXX\n$percent\nDownloading $filename\nXXX"
fi
done |
whiptail --title lftp --gauge progress 10 60 0