更新1

更新1

我读过了问题及其答案,但他们没有回答我的问题。

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 个遗留问题:

  1. 如果我可以显示相对于将要复制的文件总数(而不是所有可复制的文件)的操作进度,那就太好了,因为我使用--only-newer.
  2. 记住(1),--only-newer当目录已经完全下载时,找出为什么使用它与不使用它具有相同的速度会很有趣。如果我能让这个过程更快,那就太好了。

相关内容