Linuxではcurl
を使用しています。 FTPサーバーでファイルの一部をダウンロードしていますが(-r
オプションを使用)、接続がうまくいかず、常に中断します。再び接続したときにダウンロードを再開するスクリプトを書きたいのですが。
このコマンドを使用しましたが、機能しません。
until curl -r 666-9999 -C - --retry 999 -o "path/to/file" "ftp:/path/to/remote/file"; do :; done
curl -L -O your_url
ファイルがダウンロードされます。
ここで、接続が中断されたとしましょう。
curl -L -O -C - your_url
これは、最後にダウンロードされたバイトからダウンロードを続行します
マンページから:
「-C-」を使用して、転送を再開する場所/方法を自動的に見つけるようにcurlに指示します。次に、指定された出力/入力ファイルを使用してそれを把握します。
wgetは、この使用例のために特別に作成されました。 manページから:
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を使用してファイルをダウンロードするだけで、ファイルが完全に転送されるまでネットワーク接続が再確立されます。
Whileループで終了コードを確認し、ダウンロードが成功したことを終了コードが示すまで再開できます。
export ec=18; while [ $ec -eq 18 ]; do /usr/bin/curl -O -C - "http://www.example.com/a-big-archive.Zip"; export ec=$?; done
例は http://ilovesymposia.com/2013/04/11/automatically-resume-interrupted-downloads-in-osx-with-curl/ から取得されます