中断された "curl" ダウンロードを再開

中断された

ネットワーク経由で大容量ファイルをダウンロードしています。ダウンロード中(たとえば40%)、プライマリマシンはネットワークから切断され、curlシャットダウンする前にネットワークに接続されます。ただし、この場合、カールはプロセスを再開しません。

結局カールはやめました。

curl中断されたダウンロードを再開するのに役立つスイッチは何ですか?

編集:問題の詳細な説明

18:43:20 PM    SHW@SHW:/tmp # curl http://ip-address.com/BigFile
18:43:40 PM                   <Downloading in progress>
18:43:50 PM                   <Downloading in progress>
18:44:10 PM                   <network get disconnected>
18:44:20 PM                   <Downloading get stuck>
18:44:30 PM                   <Network get connected>
18:44:40 PM                   <DOWNLOAD MUST RESUME NOW>      <==

上記のタイムスタンプに基づいて開始されたプロセスを終了する前に、ダウンロードを再開したいと思いますcurlcurlカールコマンドを再実行したくありません。

ベストアンサー1

あなたはそれを使用することができます

curl -L -O --retry 999 --retry-max-time 0 -C - http://url
  • -C -:最後のダウンロードが中断された時点から再開
  • --retry 999: 何度も再試行しました。
  • --retry-max-time 0: 再試行タイムアウトの防止

または

curl -L -o 'filename' -C - http://url

修正する

export ec=18; while [ $ec -eq 18 ]; do /usr/bin/curl -O -C - "http://www.example.com/big-archive.zip"; export ec=$?; done

説明する:

ダウンロードが中断されると、カールの終了コードは18で、$?bashの最後のコマンド終了コードを提供します。したがって、終了コードが18の場合は、ファイル名を保持しながらファイルのダウンロードを続けてください(-O)


個人的に好むのは、wgetこのユースケースのために特別に作成されたものを使用することです。マニュアルページから:

Wget has been designed for robustness over slow or unstable network connections;
if a download fails due to a network problem, it will keep retrying until the
whole file has been retrieved.  If the server supports regetting, it will
instruct the server to continue the download from where it left off.

wgetほぼすべてのLinuxディストリビューションで利用可能です。すでにディストリビューションにインストールされている可能性があります。ダウンロードファイルの使用中は、wgetファイル転送が完了するまでネットワーク接続が再確立されます。

おすすめ記事