web-dev-qa-db-ja.com

Amazon S3バケットをミラーリングする実際的な方法は何ですか?

Amazon S3バケットをミラーリングしたい。これは、1)1つのプロバイダーにのみ存在するすべてのデータを必要としないためです。 2)ソフトウェアエラーまたはセキュリティ違反が発生した場合、データをバックアップしたい。

S3cmd sync関数を使用してローカルディスクにミラーリングできますが、これは非常に大きなバケットに対応できず、迅速なバックアップリストアには役立ちません。 Rackspace Cloud Filesなどの競合他社にデータをミラーリングしたい。

Linuxボックスで自動化された方法でこの種のミラーリングを容易にするためのシンプルで堅牢な方法についての提案はありますか?

9
Ben

" s3cmd "ユーティリティを "sync"オプションと共に使用できますが、この同期メカニズムが重複バックアップを台無しにしているかどうかを調べようとしているので、私はあなたの質問につまずきました。

6
jberryman

同じ問題があったため、S3バケットを別のS3バケットにミラーリングするように特別に設計された小さなプログラムを作成しました。私はそれをs3s3mirrorと呼んでいます。

最初に「s3cmd sync」アプローチを試しましたが、何十万ものオブジェクトが入ったバケットがあり、「s3cmd sync」はそこに座っただけで、システムが停止するまでメモリを消費し続けました。私はs3s3mirrorを設計して、すぐに開始し、100の同時スレッド(構成可能)を使用し、CPUとメモリーを適度に使用します。私がそう言うなら、それはかなりおかしくて速いです。

これをApacheライセンスの下でgithubで利用できるようにしました。それを試してみることにした場合は、あなたの考えと改善できる点があるかどうか私に知らせてください。

ここにリンクがあります: https://github.com/cobbzilla/s3s3mirror

ありがとう!

  • ジョナサン。
5
cobbzilla

現在、Amazonはこれを行うためのサポートされているツール aws cli を持っています。

ローカルとリモート間、または2つのs3ロケーション間でどちらの方向にもミラーリングできます。

残念ながら、RackspaceのようなS3以外の場所を直接サポートすることはできませんが、この質問を見つけた人にとって、これは役立つ回答になると思いました。私のように、それを見つける前に。

特に、

aws s3 sync s3://some/s3/path /some/local/path
4
Dan Pritts

チェックアウト ジャングルディスクサーバー 。 Amazon S3とRackspace Cloud Filesの両方で動作します。 S3とCFをファイルシステムの別の場所にマウントし、2つの間でrsyncを使用できます。

2
Alan Ivey

s3fs を使用して、Fuseでバケットをマウントしてみることができます。それが完了したら、マウントポイントからローカルディスクにrsyncを実行できます。

2
growse

Minio server 、オープンソース、S3互換APIをセットアップできます。 EC2または任意のクラウドプロバイダーに代替サーバーとして設定し、 Minio clientsmc mirrorコマンドを使用して定期的にS3のミラーリングを行うことができます。単純なcronスクリプトの記述と同じように自動化できます。

それが役に立てば幸い。免責事項:私は Minio のために働いています

1
koolhead17

バケットのオンライン同期には、リージョン間レプリケーションを使用できます。このようにして、元のバケットに対するすべての更新は、別のリージョンのS3バケットに自動的に同期されます。 https://docs.aws.Amazon.com/AmazonS3/latest/dev/crr.html

バケットでバージョン管理を有効にする必要があることに注意してください。バケット内のオブジェクトの更新/削除を頻繁に行う場合は、ライフサイクルポリシーを有効にして古いオブジェクトを削除する必要があります。

1
timurb