接続状態が悪いため大容量ファイルをダウンロード

接続状態が悪いため大容量ファイルをダウンロード

接続が悪いときに大容量ファイルをダウンロードするための既存のツールはありますか?

比較的小さいファイル(300MB)を定期的にダウンロードする必要がありますが、遅い(80〜120KB /秒)TCP接続は10〜120秒後にランダムに切断されます。 (これは大規模な会社のネットワークです。インドで働いている管理者に何度も連絡しましたが、彼らは何もできないか何もしたくありませんでした。)問題はリバースプロキシ/ロードバランサーにある可能性があります。

これまで私はpcurlの修正版を使用しています。https://github.com/brunoborges/pcurl

私は次の行を変更しました。

curl -s --range ${START_SEG}-${END_SEG} -o ${FILENAME}.part${i} ${URL} &

これに関して:

curl -s --retry 9999 --retry-delay 3 --speed-limit 2048 --speed-time 10 \
    --retry-max-time 0 -C - --range ${START_SEG}-${END_SEG} -o ${FILENAME}.part${i} ${URL} &

--speed-limit 2048 --speed-time 10接続が失敗した場合は、ほとんど数分間停止するため、追加する必要があります。

ところが最近はこの台本も終わることができません。

1つの問題は、そのセクションを無視しているようで、-C -再試行後もそのセグメントを「続行」しないことです。関連する一時ファイルを切り捨て、失敗するたびに最初から始めるようです。 (--range-Cオプションを一緒に使用することはできないようです。)

別の問題は、スクリプトがすべてのセグメントを同時にダウンロードすることです。 300個のセグメントを持つことはできず、一度に10個しかダウンロードできません。

この特定の目的のためにC#でダウンロードツールを作成するつもりですが、既存のツールがある場合、またはカールコマンドが他のパラメータで正しく機能する場合は、時間を節約できます。

アップデート1:追加情報:パラレルダウンロード機能には、接続あたりの帯域幅制限(80〜120 KB /秒、ほとんど80)があるため、削除しないでください。したがって、10個の接続が速度を10倍向上させることができます。 1時間ごとにファイルが作成されるため、1時間以内にファイルのダウンロードを完了する必要があります。

ベストアンサー1

lftpウィキペディア)この点が良いです。複数のプロトコルをサポートし、複数の並列接続を使用してファイルをダウンロードすることができます(非混雑によって大きなパケット損失が発生する場合に便利です)、自動的にダウンロードを再開できます。また、スクリプト可能です。

これには、あなたが提案した調整が含まれています(ありがとうございます):

lftp -c 'set net:idle 10
         set net:max-retries 0
         set net:reconnect-interval-base 3
         set net:reconnect-interval-max 3
         pget -n 10 -c "https://host/file.tar.gz"'

おすすめ記事