アップデート1

アップデート1

読みましたこれ質問とその答えはありますが、私の質問には答えていません。

シェル スクリプトは次のとおりです。

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-スクリプトカウント.txtlftp スクリプトは正常に動作します:

debug 10
set ssl:verify-certificate no
open ...
user ... ...
cd ...
ls -R .

lftp-スクリプトカウント.txtlftp スクリプトの動作は遅く (ただし確実に動作しますが、もっと高速に動作させたいです)、進行状況は whiptail に到達しません。

set ssl:verify-certificate no
open ...
user ...
cd ...
mirror -P=10 . lftp-works --exclude-glob=node_modules
quit

結果、進行状況バーは表示されますが、251MB 全体がダウンロードされたにもかかわらず、最後まで 0% のままです。ターミナル ウィンドウのサイズを変更しても、whiptail 画面は再描画されません。

ダウンロードの最後まで到達すると、進行状況バーウィンドウは正常に消えます。

シンプルに表示されるパーセントはlftp -f lftp-script.txtグローバルではないようです。このコマンドの出力には、パーセントのほかに次のようなものが含まれます。

  • 応答を待っています...
  • データの受信/TLS
  • データ接続を作成しています...
  • データ受信中...

例:

スクリーンショット

私の質問は次のとおりです:進捗状況をプログレスバーで適切に表示するにはどうすればよいですか?

上記の lftp スクリプトに見られるように、進行状況を表示し、私の要件に適した別の CLI FTP クライアントはありますか?

ありがとう。

アップデート1

残っている問題は 2 つあります。

  1. を使用しているため、コピー可能なすべてのファイルではなく、コピーされるファイルの合計数に対する操作の進行状況を表示できると便利です--only-newer
  2. (1) を念頭に置いて、ディレクトリがすでに完全にダウンロードされているときに、なぜそれを使用した場合と使用しない場合で速度が同じなのかを調べるのは興味深いでしょう--only-newer。プロセスを高速化できれば素晴らしいことです。

関連情報