EBS ボリューム (2) の (毎日の) スナップショットを自動化し、それらを管理する最良の方法は何ですか?
「管理」とは、毎日のバックアップを作成するだけでなく (cron ジョブが関与すると推測しています)、過度のデータ使用を避けるために x 日より古いスナップショットも削除するスクリプトを探していることを意味します。 .
そのようなスクリプトはどこかに存在すると思いますが、特定することはできません。
タイ
EBS ボリューム (2) の (毎日の) スナップショットを自動化し、それらを管理する最良の方法は何ですか?
「管理」とは、毎日のバックアップを作成するだけでなく (cron ジョブが関与すると推測しています)、過度のデータ使用を避けるために x 日より古いスナップショットも削除するスクリプトを探していることを意味します。 .
そのようなスクリプトはどこかに存在すると思いますが、特定することはできません。
タイ
http://awsmissingtools.comで同様のオープンソース ツールを使用しました。「ec2-automate-backup」ツールを次のように実行すると、「ec2-automate-backup -s tag -t Backup-true -k 14 - p" は、タグ Backup=true を使用してすべての EBS ボリュームをバックアップし、これらのスナップショットが -k 日後に削除されるように設定します。 .
この種のスクリプトの他の実装があると確信していますが、ここに私のものがあります:
http://www.capsunlock.net/2009/10/deleting-old-ebs-snapshots.html
私は同じ問題に遭遇していました。その結果、特別なスクリプトを作成します。サーバーにPHPがインストールされている場合は、次のことができます。
このスクリプトは、設定した間隔でバックアップを作成するだけでなく、指定されたより古いスナップショットを削除します。
フォルダに移動
$ cd /usr/local/
この要点をec2
フォルダーに複製します
$ git clone https://gist.github.com/9738785.git ec2
そのフォルダに移動します
$ cd ec2
実行backup.php
可能にする
$ chmod +x backup.php
AWS PHP SDK github プロジェクトのリリースを開き、aws.zip
ボタンの URL をコピーします。今すぐあなたのサーバーにダウンロードしてください。
$ wget https://github.com/aws/aws-sdk-php/releases/download/2.6.0/aws.zip
このファイルをディレクトリに解凍しますaws
。
$ unzip aws.zip -d aws
phpファイルを編集backup.php
し、すべての設定を一行で設定します5-12
$dryrun = FALSE;
$interval = '24 hours';
$keep_for = '10 Days';
$volumes = array('vol-********');
$api_key = '*********************';
$api_secret = '****************************************';
$ec2_region = 'us-east-1';
$snap_descr = "Daily backup";
試して。このスクリプトを実行します
$ ./backup.php
テストはスナップショットが作成されました。
すべて問題なければ、cronjob を追加します。
* 23 * * * /usr/local/ec2/backup.php
EBS スナップショットを管理するためのツールを探している多くの人に出会いました。インターネットでいくつかのツールを見つけましたが、それらは単なるスクリプトであり、不完全なソリューションでした。最後に、より柔軟で一元化され、管理しやすいプログラムを作成することにしました。
アイデアは、すべての EBS スナップショット (インスタンスまたはリモートに対してローカル) を制御するための集中型プログラムを持つことです。
小さな Perl プログラムを作成しましたhttps://github.com/sciclo/EBS_Snapshots
いくつかの機能: * プログラムはデーモン モードまたはスクリプト モード (crontab) で実行されます。
ローカルに接続されたボリュームまたはリモートのみを選択することもできます
ログファイルを定義できます
ボリュームごとにスナップショットの数量を定義できます
ボリュームごとに頻度を定義できます
頻度と数量は、制限に達すると「ラウンド ロビン」のように機能し、最も古いスナップショットが削除されます。
つまり、6 つのスナップショットがあり、3 つの段階で数量を変更すると、プロセスによって自動的に再調整されます。
「プレスクリプト」実行を定義できます。スナップショットを実行する前に実行するコードを追加できます。たとえば、ボリュームをアンマウントしたり、一部のサービスを停止したり、インスタンスの負荷を確認したりできます。親プロセスは終了コードを待ちます。「0」は成功を意味し、終了コードに応じて続行するかどうかを定義できます。
スナップショットを取得した後に任意のスクリプトを実行する「ポストスクリプト」実行を定義できます (たとえば、それについて通知する電子メール)。
「保護されたスナップショット」を追加して、定義したスナップショットをスキップできます。つまり、スナップショットは「読み取り専用」になり、消去されることはありません。
スクリプトがデーモンモードで実行されている場合、スクリプトを「オンザフライ」で再構成できます。スクリプトはシグナルと IPC を受け入れます。
API を何度も要求することを避けるために、「ローカル キャッシュ」があります。構成ファイルの構成を追加または変更し、プロセスを強制終了せずにリロードできます。