Amazon Glacier:マルチスレッド/マルチパートダウンロードのPerlクライアント

画像

アマゾン氷河


つまり、Amazon Glacierは、アーカイブ/バックアップを保存するために設計された非常に魅力的なストア価格サービスです。 しかし、アーカイブを復元するプロセスはかなり複雑であり、かつ/または高価です。 ただし、このサービスは二次バックアップに非常に適しています。
Glacierの詳細について 、すでにギーク誌に書いています。

投稿について


ローカルディレクトリをGlacierサービスと同期するためにPerlでオープンソースクライアントを共有し、氷河で作業する際のニュアンスについても説明し、その作業のワークフローを説明します。

機能的


mtglacier GitHub リンク
プログラムの特徴:


プロジェクト目標


1つのプログラムに4つのことを実装します(これらはすべて別個ですが、一緒にではありません)

  1. Perl実装-プログラムが作成される言語/テクノロジーは、エンドユーザー/管理者にとっても重要だと思います。 そのため、異なる言語の実装を選択する方が良い
  2. 必ずAmazon S3サポートを計画してください
  3. マルチパート操作+マルチスレッド操作-
    multipartは、数ギガバイトをリモートサーバーにアップロードし、突然接続が切断される状況を回避するのに役立ちます。 マルチスレッドはダウンロードを高速化し、小さなファイルのヒープのロードまたは多数のファイルの削除を大幅に高速化します
  4. プロトコルの独自の実装-コードを再利用可能にし、CPANで個別のモジュールとして公開する予定です


仕組み



ファイルをサービスに同期する場合、 mtglacierはログ(テキストファイル)を作成します。ログにはすべてのアップロードファイル操作が記録されます。各操作について、ローカルファイルの名前、アップロード時間、ツリーハッシュファイル、受信したarchive_idファイル。

Glacierからローカルディスクにファイルを復元する場合、リカバリ用のデータはこのログから取得されます(glacierでファイルを一覧表示できるのは4時間以上の遅延がある場合のみ)。

Glacierからファイルを削除すると、削除エントリがログに追加されます。 Glacierで再同期すると、ログによって判断して、存在しないファイルのみが処理されます。

2パスファイルリカバリ手順:
  1. ログには存在するがローカルドライブには存在しないファイルをダウンロードするタスクが作成されます
  2. 4時間待った後、2番目のコマンドを実行してこれらのファイルをダウンロードできます


警告




使い方


  1. AmazonコンソールでVaultを作成する
  2. glacier.cfgを作成します(ボールトが作成されたのと同じリージョンを指定します)
    キー= YOURKEY
    秘密=あなたの秘密
    地域= us-east-1
    

  3. Glacierでローカルディレクトリを同期します。 並行性パラメーターを使用して、スレッドの数を示します
    ./mtglacier.pl sync --config=glacier.cfg --from-dir /data/backup --to-vault=myvault --journal=journal.log --concurrency=3

  4. ファイルを追加してもう一度同期できます
  5. ファイルの整合性をチェックする(ログでのみチェックされる)
    ./mtglacier.pl check-local-hash --config=glacier.cfg --from-dir /data/backup --to-vault=myvault --journal=journal.log


  6. /データ/バックアップからいくつかのファイルを削除できます
  7. データ回復ジョブを作成します。 max-number-of-filesパラメーターを使用して、復元するアーカイブの数を指定します。 現時点では、数十を超える値を指定することはお勧めしません(現在のジョブのリストが複数のページにロードされるまで実装されます)
    ./mtglacier.pl restore --config=glacier.cfg --from-dir /data/backup --to-vault=myvault --journal=journal.log --max-number-of-files=10

  8. 4時間以上待つ
  9. 削除されたファイルを回復する
    ./mtglacier.pl restore-completed --config=glacier.cfg --from-dir /data/backup --to-vault=myvault --journal=journal.log

  10. バックアップが不要になった場合、Glacierからすべてのファイルを削除します
    ./mtglacier.pl purge-vault --config=glacier.cfg --from-dir /data/backup --to-vault=myvault --journal=journal.log



実装



これまで欠けているもの


最初のベータ版の主なものは、安定して動作する(アルファ版ではない)バージョンで、週の終わりまでに準備ができていたため、まだ多くのことが欠けています。
それは必須です:

Source: https://habr.com/ru/post/J150324/


All Articles