web-dev-qa-db-ja.com

AWSGlacierへのサーバーの増分バックアップ

LinuxサーバーからAWSGlacierにさまざまなディレクトリとファイルをバックアップしようとしています。私はこれを管理する方法の詳細を理解しようとしています。

増分バックアップ

ファイルを段階的にアップロードしたい。したがって、基本的に、ファイルが変更されていない場合、Glacierに既に存在する場合は、再度アップロードしたくありません。私はこの部分を理解したと思います。 Glacierボールト内のアーカイブのインスタントリストを取得できないため、ボールトに何が存在し、何が存在しないかを判断できるように、アップロードされたファイルのローカルデータベースを保持します。これにより、増分バックアップを実行できます(不足しているファイルまたは変更されたファイルのみをアップロードします)。

ファイルを上書きできませんか?

http://aws.Amazon.com/glacier/faqs/ )によると:

Amazon Glacierに保存されたアーカイブは不変です。つまり、アーカイブはアップロードおよび削除できますが、編集したり上書きしたりすることはできません。

それで、ファイル/アーカイブをアップロードし、その後、ファイルがローカルで変更され、次にバックアップを実行すると、Glacierは新しいバージョンでファイルを上書きできないので、これをどのように処理しますか?

古いデータの削除

AWSは、3か月未満のアーカイブを削除する場合、GBあたり$ 0.03を請求します。ローカルサーバーのバックアップを行っているので、ローカルに存在しなくなったアーカイブを削除したいと思います。これを整理するための最良の方法は何ですか。ローカルに保存されたアーカイブインベントリを使用して、存在しなくなったデータを特定し、3か月以上経過している場合は、Glacierから削除しますか?それは簡単に思えますが、これに対するより良いアプローチはありますか?

個々のファイルとTAR/Zipファイル

個々のファイルをアーカイブとしてアップロードするか、アップロードする前にファイルをTARファイルまたはZipファイルにグループ化することでより効率的にすることができます。 TAR/Zipファイルのアイデアは魅力的です。これにより、TAR/Zipファイルがよりシンプルになり、ストレージ料金が少なくて済みますが、増分アップロードをどのように処理するのでしょうか。 10,000ファイルを含む20 MB Zipファイルをアップロードし、そのうちの1つをローカルで変更した場合、別の20 MB Zipファイルをアップロードする必要がありますか?今、私はそれらのZipファイルにほとんどすべてのコピーを2つ保存するコストを負担する必要があります...また、ローカルに存在しなくなったものをZipファイルから削除するにはどうすればよいですか? Zipファイル全体を削除したくないので、もう存在しないファイルを保存するために料金がかかります。

多分私はこれらすべてを考えすぎています。これらの質問に取り組む最も簡単な方法は何ですか?

重要かどうかはわかりませんが、PHP SDKをこのバックアップスクリプトに使用しています。また、最初にS3バケットにアップロードしてから、 S3のストレージと転送の料金も支払う必要があるため、Glacierにバケットします。

5
Jake Wilson

それで、ファイル/アーカイブをアップロードし、その後、ファイルがローカルで変更され、次にバックアップを実行すると、Glacierは新しいバージョンでファイルを上書きできないので、これをどのように処理しますか?

氷河FAQ

データはAmazonGlacierにアーカイブとして保存します。各アーカイブには、後でデータを取得するために使用できる一意のアーカイブIDが割り当てられます。アーカイブは単一のファイルを表すことも、複数のファイルを組み合わせて単一のアーカイブとしてアップロードすることもできます。アーカイブをボールトにアップロードします。ボールトは、データを整理するために使用するアーカイブのコレクションです。

つまり、アップロードする各ファイルには一意のIDが割り当てられます。同じファイルを2回アップロードすると、ファイルのコピーごとに独自のIDが取得されます。これにより、必要に応じてファイルの以前のバージョンに復元することができます。

ローカルに保存されたアーカイブインベントリを使用して、存在しなくなったデータを特定し、3か月以上経過している場合は、Glacierから削除しますか?それは簡単に思えますが、これに対するより良いアプローチはありますか?

3か月未満のデータを削除するための追加料金を回避するには、これがおそらく最善のアプローチです。しかし、追跡して削除する必要があるのは、もはや存在しないデータだけではありません。上記のように、ファイルが変更されてGlacierに再アップロードするたびに、ファイルの新しいIDが取得されます。古いバージョンに復元する機能を望まない場合は、最終的に古いバージョンのファイルも削除する必要があります。

10,000ファイルを含む20 MB Zipファイルをアップロードし、そのうちの1つをローカルで変更した場合、別の20 MB Zipファイルをアップロードする必要がありますか?今、私はそれらのZipファイルにほとんどすべてのコピーを2つ保存するコストを負担する必要があります...また、ローカルに存在しなくなったものをZipファイルから削除するにはどうすればよいですか? Zipファイル全体を削除したくないので、もう存在しないファイルを保存するために料金がかかります。

それはあなたが本当に自分で決めなければならないトレードオフです。すべてをtar/Zipしてから、それらのファイルとその中のすべてを追跡するように強制されますか、それともファイルが個別にアップロードされて不要になったときに個別にパージできるのは価値がありますか?.

あなたが考えるかもしれない他のいくつかのアプローチ:

  • 2つ以上のtar/Zipアーカイブがあります。1つは変更される可能性が非常に低いファイル(システムファイルなど)を含み、もう1つは構成ファイルや時間の経過とともに変更される可能性が高いその他のものを含みます。
  • 個々のファイルを追跡することを気にせず、Glacierにアップロードされる単一のtar/Zipアーカイブにすべてをバックアップします。各アーカイブが3か月の時点に達したら(またはそれ以降)、アーカイブを削除するだけです。これにより、特定の時点から追跡および復元する非常に簡単な方法が得られます。

とはいえ、グレイシャーはあなたのニーズに最適なアプローチではないかもしれません。 Glacierは、実際にはデータアーカイブを目的としており、サーバーをバックアップするだけではありません。サーバーの増分バックアップを実行したいだけの場合は、Glacierの代わりにS3を使用することをお勧めします。 Duplicity または rdiff-backup のようなツールを( s3fs のようなものと組み合わせて)使用すると、S3への増分バックアップを取ることができますバケットに入れて、非常に簡単に管理します。私は何年にもわたっていくつかのLinuxシステムでrdiff-backupを使用してきましたが、非常にうまく機能していることがわかりました。

3
Bruce P

これは* nixのコマンドラインツールで、変更されたファイルのみのアップロード、ローカルで変更されたファイルの置き換え、Glacierからのローカルで削除されたファイルの削除をサポートしています https://github.com/vsespb/mt-aws-glacier

1
vsespb

別の方法として、 Duplicity のようなものを使用して、生成されたアーカイブをアップロードすることもできます。

これにはいくつかの利点があります。

  • 重複は増分バックアップを行うため、変更されたファイルのみがバックアップセットにキャプチャされます
  • 重複はファイルの変更を処理できるため、ファイルのごく一部のみが変更された場合、理論的には変更のみがアップロードされます
  • あなたが妄想型の場合、バックアップは暗号化されます

GlacierでDuplicityを使用する最も簡単な方法は次のとおりです。

  • どこかのローカルディレクトリにバックアップします(そしてこのバックアップを保持します)。 Duplicityは、バックアップが実行されるたびにその「マニフェスト」ファイルにアクセスする必要があるため、どのファイルが変更されたかを知ることができます。
  • Duplicityによって作成された新しいアーカイブをローカルバックアップからGlacierにアップロードします。これには glacier-cmd のようなものを使用します。
0
pdey