curlを使用してダウンロードを再開し続ける再試行


17

Macを使用していて、ftpサーバーからダウンロードしたいファイルのリストがあります。接続は少しバグがあるので、接続が切断された場合は再試行して再開する必要があります。

wgetでこれを実行できることは知っていますが、残念ながらMac OS Xにはwgetが付属していません。私はそれをインストールできましたが、それを行うには(何かを見逃していない限り)XCodeとMacPortsを最初にインストールする必要がありますが、これは避けたいと思います。

Curlは入手可能ですが、それがどのように機能するのか、実際に使用する方法はわかりません。テキストファイル(ftp:// user:pass @ server / dir / file1のように、1行に1つのフルパス)にファイルのリストがある場合、curlを使用してこれらすべてのファイルをダウンロードするにはどうすればよいですか?そして、curlめないようにカールすることはできますか?好きなように、無限に再試行し、中断したところからダウンロードを再開しますか?

回答:


20

グーグルと男の読書などのしばらくの間、私は私のために働いた解決策を見つけました:

curl ftp://server/dir/file[01-30].ext --user user:pass -O --retry 999 --retry-max-time 0 -C -
  • [01-30] file01.ext、file02.extなどの名前の30個のファイルをダウンロードします。
  • --user user:pass 明らかなはずです
  • -O 元の名前のファイルに出力する
  • --retry 999 999回再試行する
  • --retry-max-time 0再試行のタイムアウトを防ぐため。固定の--retry-delayを指定しない場合のデフォルトの動作は、リトライ間で最初に1秒スリープし、それを2倍にして、10分に達するまでです。再試行の間
  • -C -ドロップした場所から続行するには(コマンドを再度実行する場合)。ダッシュはその後、どこから再開するかを把握するように指示します

代わりにファイルからファイル名を取得する方法を知っている人がいたら教えてください。


マニュアルページには次のように書かれています:

--url <URL>
取得するURLを指定します。このオプションは、設定ファイルでURLを指定する場合に便利です。

それは何かのように思えますが、それがどのように使用されるかを完全には理解していません...


2

-Kオプションを使用してcurlを実行し、構成ファイルを指定できます。その場合、次の構文を使用します。

optionname=<value>

URLのリストを含むファイルがある場合、次のようにcurlを使用できます。

sed 's/\(.*\)/-O\nurl=\1/g' url_list.txt | curl -K -

次のように、URLのリストを変換します。

http://host1.com/foo.html
http://host2.com/bar.html

このような形式に:

-O
url=http://host1.com/foo.html
-O
url=http://host2.com/bar.html

Curlはそれを読み取り、オプションなどを解釈します。

HTH、

アダム

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.