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


16

ユーザーのアップロードファイルをS3に保存するWebサーバーを実行しているEC2インスタンスがあります。ファイルは一度書き込まれ、変更されることはありませんが、ユーザーによって時々取得されます。年間約200〜500 GBのデータが蓄積される可能性があります。特に誤って削除した場合に、このデータの安全性を確保し、理由に関係なく削除されたファイルを復元できるようにしたいと考えています。

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は最近、バージョニングがライフサイクルルールで動作するようになったことを発表しました


aws.amazon.com/blogs/aws/archive-s3-to-glacier/…+ 下部にs3から氷河までを説明する素敵な短いYouTubeビデオがあります
等価8 14年

回答:


10

S3バケットのバージョニング機能について読んだことがありますが、変更履歴のないファイルの回復が可能かどうかはわかりません。バージョン管理に関するAWSドキュメントを参照してください。

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

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

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

Glacierは、実際には非常にまれにしかアクセスされない長期保存用です。また、大量のデータをポイントインタイムで復元することを意図したものではないため、データの大部分を一度に取得するのは非常に高価になる可能性があります(パーセント単位)。

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

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

ですから、ここにはいくつか質問があります。まず、S3バージョン管理では、変更されていないファイルの回復が可能ですか?

はい

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

知らない


Sirex、1つの明確化に感謝します。一度に1つのバックアップバケット(現在の月)のみを保持し、先月のバックアップをGlacierにアーカイブし、一般的な保持ポリシーでGlacierのコピーを削除することを意図しました(3か月間毎月1年に1回)。これは可能だと思いますか、またはこの戦略を妨げる他のAWSの制限がありますか?
ファイバー

うーん、私はそれが合理的だと思います。しかし、私はそれを怒りで試したことはありません(または、その点で氷河、私たちはシドニーを使用し、調べたときに入手できませんでした)
Sirex

3

s3をマウントするのは好きではありません。なぜなら、その速度は遅く、ハングして古い学校のnfsのように動作するからです。必要に応じてアップ/ダウンすることをお勧めします。

http://s3tools.org/s3cmd

スクリプトを作成するのは簡単です...〜/ .s3cfgファイルを忘れないでください


うわー、これはかっこいい!
JakeGould

@nandoP +1私はs3cmdを使用して自分でロールバックすることを考えていました
Fiver

1

基本的にS3バケットをローカルファイルシステムであるかのようにマウントするS3FSが必要になる場合があります。

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

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

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

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

一般に、S3FSはAmazon S3バケット内に置かれたコンテンツを読み取るのに最適であると思います。書き込みは一貫性がありません。ただし、S3バケットをバックアップするためには、S3FSのTony Wangフォークが最適です。


1
これは便利に聞こえます。クライアントにダウンロードせずに、バケット間で直接転送しますか?
ファイバー

おそらくはい。主に、ローカルサーバーにマウントし、ローカルマシンにバックアップするために使用します。ただし、書き込み機能があるため、バケット間でデータをシャッフルするための「移動」として使用することを決めません。基本的に、中間マシンでは、1つのマウントポイントに1つのバケットをマウントします。次に、他のバケットを別のマウントポイントとしてマウントします。次に、rsyncを実行します。しかし、私が言ったように、実際にはファイルシステムではないため、変更時間/日付はAmazon S3で奇妙になる可能性があります。しかし、実験してください。
JakeGould
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.