web-dev-qa-db-ja.com

ソースバケットをバージョン管理せずにAWS S3バケットをバックアップする方法

Amazon S3バケットの誤った削除から回復する方法はありますか?

バケットには重要な情報が含まれているため、バケット自体を誤ってまたは悪意を持って削除するリスクを軽減する必要があります。

バケット全体をローカルで同期できることはわかっていますが、バケットサイズが100GBの場合、これはあまり実用的ではありません。

バックアップ戦略に関するアイデアはありますか?

44
Nikhil Gupte

別のアプローチは、バケットでS3バージョニングを有効にすることです。その後、削除したファイルなどを復元できます これを有効にする方法については、S3のドキュメントを参照してください

BucketExplorer のようなサードパーティのツールを使用すると、バージョニングの操作が非常に簡単になります(直接APIを直接呼び出すのではありません)。

S3バケットの多要素認証削除を有効にすることもできます。これにより、「偶発的な削除」が少し難しくなります;)

多要素認証削除の詳細
オブジェクトの削除の詳細

23
snarkyboojum

S3cmd http://s3tools.org/s3cmd を使用できます

Mybucketというバケットをバックアップするには

s3cmd mb s3://mybucket_backup
s3cmd --recursive cp s3://mybucket s3://mybucket_backup
13
Ian Purton

これは安価なソリューションではありませんが、バケットが本当に重要な場合は、次のようにします。 Amazon EC2インスタンス を起動し、コンテンツを定期的に同期します。

Amazon EC2は、仮想化ホスティングプロバイダーです。 Linux、Windowsなどのインスタンスを起動して、必要なものを実行できます。時間単位で支払うと、そのサーバー用にかなり大きなストレージスペースがローカルに確保されます。たとえば、「大」サイズのインスタンスを使用します。これには、850 GBのローカルディスク領域が付属しています。

クールな点は、S3と同じネットワーク上にあり、S3とEC2の間で転送が無制限になることです。私はWindows EC2インスタンスで$ 20 Jungle Disk ソフトウェアを使用しています。これにより、ローカルディスクフォルダーのようにS3バケットにアクセスできます。次に、スケジュールされたバッチファイルを実行して、S3からデータをローカルのEC2ディスク領域にコピーできます。必要に応じて、またはギャンブルしたい場合は、時間ごとのバックアップを維持するように自動化できます。1時間に1回程度同期するようにJungleDisk(またはそれに相当するLinux)を設定します。誰かがファイルを削除した場合、EC2からファイルを取り戻すには少なくとも数分はかかります。ただし、スクリプトによる通常のバックアップをお勧めします。850GBのボリュームに圧縮すると、数日分のバックアップを簡単に保持できます。

これはSQL Serverのログ配布に非常に役立ちますが、目的を達成する方法もわかります。

7
Brent Ozar

考えられる解決策の1つは、「バックアップバケット」を作成して機密情報をそこに複製することです。理論的には、データはS3の方がハードドライブよりも安全です。

また、バケットを削除する前に、すべてのバケットキーを偶然削除する必要があるため、偶発的な削除が実際の問題であるかどうかはわかりません。

7
JAG

ブレントの(優れた)回答を少し変更するには、インスタンスを実行し続ける必要はありません。データをプルダウンしてEBSボリュームに同期し、そのボリュームのスナップショットを作成してシャットダウンするEC2 AMIを作成します。

ボリュームを単独で実行したままにすることもできますが、バックアップにはスナップショットで十分です。カスタムAMIがこれをすべて実行し(完了後に自身をシャットダウンすることを含む)、相互作用がない場合、「バックアップ」スクリプトは「ec2run -n 1 -t m1.small AMI-」と起動して忘れるだけで済みます。

6
Andrew Lusk

別の可能な解決策は、バケットをS3のヨーロッパゾーンに複製することです。これは、誤って削除した後、回復するのに十分な時間バケットを保持する可能性があります。

6
shawnswaner