3

最大200万のファイルを含むs3バケットのディザスタリカバリコピーをセットアップしたいと思います。

Amazonの高い信頼性の約束を信頼しているため、これを自動化する必要はありません。バケット自体を削除するためのバージョン管理とMFAのセットアップを有効にしました。

そのため、バケットの内容を定期的に(手動で)ダウンロードして、オフラインコピーを保持したいと思います。

私はいくつかのS3クライアントを試しましたが、そのような大きなフォルダーを処理すると、それらのほとんどがハングします。

その仕事に適したツールはありますか、それともAmazonのデータエクスポートサービスに頼る必要がありますか(オフラインバックアップが必要になるたびにUSBドライブを送信する必要があります)。

よろしくお願いします!

4

2 に答える 2

4

何百万ものファイルを含むバケットを処理することは、ファイル名に何らかの「構造」がない限り、非常に困難な場合があります。残念ながら、これはGUIツールのいずれにも役立たないため、独自のソリューションの実装に行き詰まります。例えば:

  1. すべてのファイルが日付で始まるmarker場合は、リクエストのヘッダーを使用してGet Bucket、特定の日付より古いファイルのみを返すことができます。

  2. ファイルが「仮想」フォルダに配置されている場合は、ヘッダーprefixとヘッダーを使用してdelimiter各フォルダを個別に処理できます。(これを並行して実行して、処理を高速化することを検討してください)

構造がなくても、すべてが失われることはありません。S3クライアントは、200万のファイルリスト全体をメモリに保持しようとしているため、ハングします。一度に1000個のファイルをリストするオブジェクトをダウンロードできますが、これをファイル/データベースなどに保存します。200万個すべてを取得するには長い時間がかかりますが、完了したら、保存したリストをループして必要に応じてダウンロードします。

さらに良いことに、S3に追加されたファイルをデータベースで「インデックス付け」できる場合は、それを使用して、ダウンロードするファイルを決定できます。

于 2011-12-28T11:12:18.680 に答える
1

Jets3tライブラリをJavaで使用して、独自のツールを構築できます。コアJavaを知っているなら、それを使うのは難しくありません。

http://jets3t.s3.amazonaws.com/toolkit/toolkit.html

いくつかのコードサンプルがあります。

http://jets3t.s3.amazonaws.com/toolkit/code-samples.html

于 2011-12-29T17:03:12.657 に答える