ユーザーのアップロードファイルを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データのバックアップへのアプローチで基準を外れていますか?
ご意見をお寄せいただきありがとうございます!