web-dev-qa-db-ja.com

大量のダウンロードを複数のコンピューターに配布するにはどうすればよいですか?

大きなファイル(1GB)をダウンロードする必要があります。 Linuxを実行している複数のコンピューターにもアクセスできますが、それぞれが管理ポリシーにより50kB /秒のダウンロード速度に制限されています。

このファイルを複数のコンピューターにダウンロードして配布し、すべてのセグメントがダウンロードされた後にそれらをマージして、より速く受信できるようにするにはどうすればよいですか?

39
Meysam

共通プロトコルHTTP、FTPおよびSFTPは範囲要求をサポートしているため、ファイルの一部を要求できます。これにはサーバーのサポートも必要なので、実際には機能しない場合があります。

curl-rまたは--rangeオプションを使用して範囲を指定し、最終的にファイルをcattingすることができます。例:

curl -r 0-104857600         -o distro1.iso 'http://files.cdn/distro.iso'
curl -r 104857601-209715200 -o distro2.iso 'http://files.cdn/distro.iso'
[…]

そして、最終的に個々のパーツを集めると、それらを連結します。

cat distro* > distro.iso

--headオプションを使用すると、ファイルのサイズなど、ファイルに関する詳細情報を取得できます。

curl --head 'http://files.cdn/distro.iso'

開いた範囲で最後のチャンクを取得できます。

curl -r 604887601- -o distro9.iso 'http://files.cdn/distro.iso'

その他のオプションと説明については、 curl man page を参照してください。

さらに、sshとtmuxを利用して、複数のサーバーでのダウンロードの実行と追跡を容易にすることができます。

60
Marco

1ギガバイトのファイルを1秒あたり50キロバイトでロードするには、約5.5時間かかります。

パーシャルを取得するために複数のコンピューターを調整する作業により、時間を節約できるようです。

あなたはbittorrentを見て、ピアエクスチェンジを介した転送と共にウェブシーディングを利用できます。各クライアントは、ローカルエリアネットワーク(LAN)でピースを受信し、完成したピースを共有できます。各コンピューターで同じ1 GBのファイルが作成されますが、部分のマージは自動化されています。

0
Sun