puf(Parallel URL fetcher)しか見つかりませんでしたが、ファイルからURLを読み取ることができませんでした。何かのようなもの
puf < urls.txt
動作しません。
サーバーにインストールされているオペレーティングシステムはUbuntuです。
puf(Parallel URL fetcher)しか見つかりませんでしたが、ファイルからURLを読み取ることができませんでした。何かのようなもの
puf < urls.txt
動作しません。
サーバーにインストールされているオペレーティングシステムはUbuntuです。
回答:
GNU Parallelを使用して、
$ parallel -j $ {jobs} wget <urls.txt
またはGNU Findutilsxargs
から、
$ xargs -n 1 -P $ {jobs} wget <urls.txt
どこ${jobs}
の最大数されwget
ます(設定を同時に実行できるようにする-n
ために1
1つのを取得するwget
には行ごとの呼び出しurls.txt
)。なし-j
/ -P
、parallel
(のために必ずしも意味をなさないCPUコアとして、一度に多くのジョブとして実行されますwget
ネットワークIOに拘束さ)、そしてxargs
一度に一つを実行します。
一つの便利な機能parallel
オーバーしているxargs
同時に、実行中のジョブの出力を保っているが分離していますが、それを気にしない場合は、xargs
プリインストールされている可能性が高いです。
jobs
は多くの要因に依存します:パス遅延、パス帯域幅、リモートサーバーポリシーなど
aria2はこれを行います。
http://sourceforge.net/apps/trac/aria2/wiki/UsageExample#Downloadfileslistedinafileconcurrently
例:aria2c http://example.org/mylinux.iso
Pythonとpycurlライブラリを使用して実装できます。pycurlライブラリには、複数の同時接続を可能にする独自の偶数ループを実装する「マルチ」インターフェースがあります。
ただし、インターフェイスはかなりCに似ているため、他のより「Python的な」コードと比較すると少し面倒です。
その上に、より完全なブラウザのようなクライアントを構築するためのラッパーを作成しました。これを例として使用できます。pycopia.WWW.clientモジュールを参照してください。HTTPConnectionManagerは、マルチインターフェイスをラップします。
GNU Parallelのmanページの一部には、並列再帰wgetの例が含まれています。
https://www.gnu.org/software/parallel/man.html#EXAMPLE:-Breadth-first-parallel-web-crawler-mirrorer
HTMLは2回ダウンロードされます。1回はリンクの抽出用、もう1回はディスクへのダウンロード用です。他のコンテンツは一度だけダウンロードされます。
再帰性を必要としない場合、一時的な回答は明らかです。
paralellのダウンロードの被害者は面白がりません。各クライアントに1つの接続が提供されることを期待しているため、複数の接続を設定すると、クライアント全体が少なくなります。(つまり、これは失礼な行動と見なされます)。