再帰FTPの高速化


8

wget(またはncftpget)を使用して、NOAA FTPサーバーから1年分のデータをダウンロードしようとしています。ただし、FTPのオーバーヘッドが原因で、必要以上に時間がかかります(私は思います)。たとえば、このコマンド

time wget -nv -m ftp://ftp:email@ftp.ncdc.noaa.gov/pub/data/noaa/2015 -O /weather/noaa/2015

または同様に、ncftpget経由

ncftpget -R -T -v ftp.ncdc.noaa.gov /weather/noaa/ /pub/data/noaa/2015

結果をもたらす。30Mを転送する53分!

FINISHED --2015-01-03 16:21:41--
Total wall clock time: 53m 32s
Downloaded: 12615 files, 30M in 7m 8s (72.6 KB/s)

real    53m32.447s
user    0m2.858s
sys 0m8.744s

この転送を見ると、個々のファイルの転送は非常に高速(500kb /秒)ですが、12,000の比較的小さなファイルをダウンロードするプロセスでは、膨大なオーバーヘッドが発生し、プロセス全体の速度が低下します。

私の質問:

  1. 状況を正しく評価していますか?サーバーを知らないと分からないことはわかりますが、FTPは大量の小さなファイルを転送するときにこれを本当に吸いますか?
  2. リモートFTPサーバーでより快適にプレイできるように、wgetまたはncftpgetに微調整はありますか?それとも、ある種の並列性ですか?

回答:


6

これが私が他の人からのアドバイスを使ってこれを解決した方法です。この場合のNOAAには、このためのFTPおよびHTTPリソースがあるため、以下を実行するスクリプトを記述しました。

  1. ファイルのリストを取得するためのncftpls
  2. sedを使用して、httpファイルの完全なリストへのファイルパスを完成させます
  3. それらすべてをすばやくダウンロードするためのaria2c

スクリプトの例:

# generate file list
ncftpls ftp://path/to/ftp/resources > /tmp/remote_files.txt

# append the full path, use http
sed -i -e 's/^/http:\/\/www1\.website\.gov\/pub\/data\//' /tmp/remote_files.txt

# download using aria2c
aria2c -i /tmp/remote_files.txt -d /filestore/2015

これははるかに速く実行され、おそらくNOAAのサーバーに優しいでしょう。おそらくその中間のステップを取り除くための賢い方法さえあるでしょうが、私はまだそれを見つけていません。


すぐに使える優れたソリューション!ありがとう。
markusN 2016年

2
  1. あなたの評価は正しいです。純粋な数値の観点から見ると、オーバーヘッドによりダウンロードが遅くなります
  2. aria2cを使用します。Aria2cは、ftpサーバーへの多くの並列接続を開き、一連のファイルをより速くダウンロードします。サーバーが同じホストからの複数の同時接続をサポートしていることを確認してください

または、ホストで書き込みアクセス権がある場合(この場合、匿名でログインしていて、書き込みアクセス権がないと思います)ダウンロード前にファイルをzip / tar


同様に圧縮できる場合は、さらに高速になる可能性があります。
ctrl-alt-delor 2015年

aria2cは再帰FTPをサポートできますか?ドキュメントを確認しましたが、フォルダ全体をダウンロードしたいなど、これについての言及が見つかりませんでした...
Tom Hayden

ただし、標準のftpを使用してファイルを列挙し、そのリストをariaに渡すことは、再帰的な標準のftpよりも高速です
Outurnate

@TomHayden-あなたが正確にできることを私は知りませんが、確かにあなたはフォルダをリストして結果にそれを供給することができます。また、実質的に何でもできるRPCインターフェイスもあります。742:良い答え-これを言うためにここに来たが、あなたは私をそれに打ち負かした。
mikeserv 2015年

@mikeservありがとう。RPCを見つけるための小道具
Outurnate

1

はい。それで合っています。残念ながら、ftp仕様は単一のデータ接続で複数のファイルをパイプライン処理できる代​​替の転送モードを提供していますが、利用可能なソフトウェアの調査を最後に行ったとき(確かに1998年に戻ったものです)、それをサポートするものはありませんでした。ftpへの関心がかなり低いため、状況は変わっていないと思います。このようなデータセットを持つほとんどの組織は、この問題を回避するために、httpまたは大規模なアーカイブでアクセスできます。NOAAがこれを行うかどうかを確認する必要があります。

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