2011-07-22 3 views
0

私は単純なcmd.exeバッチで、URLごとに1つのwget呼び出しを使用して、HTTP経由でファイルのセットをダウンロードするためにwgetを使用しています。wget試行の間に "スキップ"動作を抑制することは可能ですか?

また、私はランダムに、ミラー間で交互と同様に、各ミラーのために別のツリーを維持したい:私は今、何

http://server06//files/file1.txt -> temp\server06\files\file1.txt 
http://server03//files/file65.txt -> temp\server03\files\file65.txt 

は次のとおりです。

echo !url! | .\runners\wget.exe --tries=3 --force-directories --directory-prefix=.\temp\ --input-file=- 

時にはそれがいくつかのために、ということを起こります理由、サーバーはTCP接続を閉じます。これを回避するには--tries=3を使用しています。このような場合には、wgetののデフォルトの動作は、それがすでにダウンロードされたバイトをスキップし、その時点から継続すること、である、このような何か:

2011-07-19 13:24:52 (68.1 KB/s) - Connection closed at byte 65396. Retrying. 

--2011-07-19 13:24:54-- (try: 3) 
http://server06//files/filex.txt 
Connecting to server|10.10.0.108|:80... failed: Unknown error. 
Resolving server... 10.10.0.108 
Connecting to server|10.10.0.108|:80... connected. 
HTTP request sent, awaiting response... 206 Partial Content 
Length: 166400 (163K), 101004 (99K) remaining [text/plain] 
Saving to: 
`./temp/server06/files/filex.txt' 

     [ skipping 50K ] 
    50K ,,,,,,,,,, ,,,....... .......... .......... .......... 61% 2.65M 0s 
    100K .......... .......... .......... .......... .......... 92% 1.62M 0s 
    150K .......... ..           100% 1.64M=0.06s 

utime(./temp/server06/files/filex.txt): 
Permission denied 
2011-07-19 13:25:15 (1.72 MB/s) - 
`./temp/server06/files/filex.txt' 
saved [166400/166400] 

私の問題は、私はwgetをダウンロードしたくないということですファイルは2つの部分に分かれています。私はwgetにもっと多くの時間を試してもらいたいですが、何らかの理由で失敗した場合は、最初からやり直したいと思います(ファイルをダウンロードしないという犠牲を払っても!)。

背景は、ファイルが1つでダウンロードされた場合にのみ対象となるフィルタドライバのコードをテストしていることです。そして、この動作のために私のテストは失敗します。

質問:この動作を抑制することは可能ですか?私。パラメータごとに設定した分だけWgetを試してみてください。試行ごとに完全なファイルまたはゼロバイトをダウンロードしていますか?

また別の回避策を探す必要がありますか?

答えて

1

the libcurl libraryで幸せになると思います。それはurlごとに1回の呼び出ししか必要とせず、libcurlは残りのすべての作業を行います。さらに、パッケージの一番のサポートがあります。

問題が発生した場合は、libcurlを使用しても問題ありません。

HTH

+0

まあ、私はcURLについて考えましたが、私はcurl.exeがどのように私のファイルをwgetと同じようにしているのか分かりませんでした。私は無作為にミラーを交替し、別々に保管したいと思います。 (これを反映するために投稿を編集します) –

+0

cURLではなく、呼び出すことのできる関数を持つライブラリであるlibcurl(cURLはこのライブラリを使用します)。これを使うには小さなプログラムを書く必要がありますが、libcurlサイトに*あなたが使用するための*デモプログラムがたくさんあります。 –

+0

さて、少しプログラミングを避けることはできないようです。ありがとう、ピート! –

関連する問題