web-dev-qa-db-ja.com

Amazon S3に保存されているデータのバックアップ

ユーザーのアップロードしたファイルをS3に保存するWebサーバーを実行しているEC2インスタンスがあります。ファイルは一度だけ書き込まれ、変更されることはありませんが、ユーザーによってときどき取得されます。おそらく、年間200〜500GB程度のデータが蓄積されるでしょう。特に偶発的な削除からこのデータが安全であることを確認し、理由に関係なく削除されたファイルを復元できるようにしたいと考えています。

S3バケットのバージョニング機能について読みましたが、変更履歴のないファイルを復元できるかどうかわかりません。バージョン管理については、こちらのAWSドキュメントをご覧ください。

http://docs.aws.Amazon.com/AmazonS3/latest/dev/ObjectVersioning.html

これらの例では、データがアップロードされても、変更されずに削除されるシナリオは示されていません。このシナリオで削除されたファイルは回復可能ですか?

次に、オブジェクトのライフサイクル管理を使用してS3ファイルをGlacierにバックアップするだけでよいと考えました。

http://docs.aws.Amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html

ただし、ファイルオブジェクトはGlacierにコピーされずにGlacierに移動されるため、これは機能しないようです(正確には、変更されたのはオブジェクト属性ですが、とにかく...)。

したがって、S3データを直接バックアップする方法はないようです。S3からローカルサーバーへのデータの転送には時間がかかり、時間の経過とともにかなりの転送コストが発生する可能性があります。

最後に、毎月のフルバックアップとして機能する新しいバケットを毎月作成し、1日目に元のバケットのデータを新しいバケットにコピーし、duplicity( http:// duplicity。 nongnu.org/ )バックアップバケットを毎晩同期します。月末に、バックアップバケットのコンテンツをGlacierストレージに配置し、元のバケットの新しい現在のコピーを使用して新しいバックアップバケットを作成し、このプロセスを繰り返します。これは機能し、ストレージ/転送のコストを最小限に抑えるように見えますが、重複のために、最初にデータを制御クライアントにダウンさせることなく、バケットからバケットへの転送が可能かどうかはわかりません。

だから、私はここにいくつかの質問があると思います。まず、S3のバージョン管理により、変更されなかったファイルを回復できますか?私が見逃したS3からGlacierにファイルを「コピー」する方法はありますか?複製やその他のツールは、S3バケット間でファイルを直接転送して転送コストを回避できますか?最後に、私はS3データをバックアップするための私のアプローチから外れていますか?

あなたが提供できるあらゆる洞察を事前に感謝します!

更新

Amazonは最近、バージョニングがライフサイクルルールで機能することを最近発表しました

16
Fiver

S3バケットのバージョニング機能について読みましたが、変更履歴のないファイルでリカバリが可能かどうかを確認できません。 >バージョン管理については、こちらのAWSドキュメントをご覧ください。

私はこれを試しました。はい、元のバージョンから復元できます。ファイルを削除すると、削除マーカーが作成され、その前のバージョン、つまり単一の唯一のリビジョンを復元できます。

次に、オブジェクトのライフサイクル>管理を使用して、S3ファイルをGlacierにバックアップするだけでよいと考えました。

しかし、ファイルオブジェクトはGlacierにコピーされず、Glacierに移動されるため、これは私たちには機能しないようです(正確には、変更されたのはオブジェクト属性ですが、とにかく...)。

Glacierは、実際には非常にまれにしかアクセスされない長期保存用に設計されています。また、大量のデータのポイントインタイムリストア(パーセンテージ)を想定していないため、データの大部分を一度に取得するのに非常にコストがかかる可能性があります。

最後に、毎月のフルバックアップとして機能する新しいバケットを毎月作成し、1日目に元のバケットのデータを新しいバケットにコピーすることを考えました。次に、重複のようなものを使用します( http:// duplicity.nongnu.org/ )バックアップバケットを毎晩同期します。

これを行わないでください。アカウントあたり100バケットしか持てないため、3年間でバックアップだけでバケットの許容量の3分の1を占めることになります。

だから、私はここにいくつかの質問があると思います。まず、S3のバージョン管理では、変更されていないファイルのリカバリを許可しますか?

はい

私が見逃したS3からGlacierにファイルを「コピー」する方法はありますか?

私が知っていることではない

10
Sirex

s3をマウントするのは好きではありません。遅いため、ハングし、旧式のNFSのように動作するためです。必要に応じて単にアップ/ダウンする方が良いです。

http://s3tools.org/s3cmd

簡単にスクリプト化できます...〜/ .s3cfgファイルを忘れないでください

3
nandoP

まるでローカルファイルシステムであるかのようにS3バケットを基本的にマウントするS3FSが必要かもしれません:

http://code.google.com/p/s3fs/wiki/FuseOverAmazon

Amazon S3のウェブコントロールパネルで作成されたものと同じフォルダー構造を保持するため、このフォークバージョンを使用することを好みます。

https://github.com/tongwang/s3fs-c

次に、基本的にrsyncを使用してデータをローカルセットアップに同期するシェルスクリプトをいくつか用意しました。

一般的に、Amazon S3バケット内に配置されたコンテンツを読み取るにはS3FSが最適です。執筆は一貫性がありません。しかし、S3バケットをバックアップするためには、S3FSのTony Wangフォークがうまく機能します。

1
JakeGould