我读过了这问题及其答案,但他们没有回答我的问题。
shell脚本是这样的:
let total=$(lftp -f lftp-script-count.txt | wc -l)-2
lftp -f lftp-script.txt |
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
这lftp-scrip-count.txtlftp 脚本运行良好:
debug 10
set ssl:verify-certificate no
open ...
user ... ...
cd ...
ls -R .
这lftp-scrip-count.txtlftp 脚本运行缓慢(但肯定可以运行,尽管我希望它运行得更快)并且进度不会达到鞭尾:
set ssl:verify-certificate no
open ...
user ...
cd ...
mirror -P=10 . lftp-works --exclude-glob=node_modules
quit
结果是显示进度条,但直到最后仍保持 0%,尽管它下载了整个 251MB。如果我调整终端窗口的大小,鞭尾屏幕不会被重新绘制。
当下载结束时,进度条窗口消失得很好。
在我看来,简单所显示的趋势lftp -f lftp-script.txt
并不是全球性的。除了百分比之外,该命令的输出还包含如下内容:
- 等待回应...
- 接收数据/TLS
- 正在建立数据连接...
- 正在接收数据...
例子:
我的问题是:如何让进度条能够很好的显示进度呢?
是否有另一个 CLI FTP 客户端可以显示进度并且适合我的要求,如上面显示的 lftp 脚本所示?
谢谢。
更新1
还有 2 个遗留问题:
- 如果我可以显示相对于将要复制的文件总数(而不是所有可复制的文件)的操作进度,那就太好了,因为我使用
--only-newer
. - 记住(1),
--only-newer
当目录已经完全下载时,找出为什么使用它与不使用它具有相同的速度会很有趣。如果我能让这个过程更快,那就太好了。