При пользовании AWS EC2, я обнаружил, что там нет готового интерфейса, для создания резервных копий диска, которые в AWS называются Snapshot.
Я начал свое исследование, как настроить автоматическое обновление. Перечитал много материала, и пришел к выводу, что простого решения нет. Нужно много прочитать документации что бы все настроить. Я понимаю что без этого ни куда. Чтение доков, это большая часть жизни как разработчика так и администратора. Но иногда, все может быть гораздо проще, и не нужно тратить много времени на то, что можно сделать всего за несколько минут.
Предлагаю свой вариант настроки в 10 шагов, без установки и настроки AWS Command Line Tools.
Предполагается что команды git
и wget
доступны.
Шаг 1
Открываем SSH и переходим в папку.
$ cd /usr/local/
Шаг 2
Копируем готовый код, который я создал и который находится на гитхабе в папку ec2
.
$ git clone https://gist.github.com/9738785.git ec2
Шаг 3
И переходим в эту папку.
$ cd ec2
Шаг 4
Делаем файл backup.php
исполняемым.
$ chmod +x backup.php
Шаг 5
Теперь надо открыть страницу релизов AWS PHP SDK на github, скопировать ссылку последнего релиза на зеленой кнопке скачать. И теперь скачиваем его на диск.
$ wget https://github.com/aws/aws-sdk-php/releases/download/2.6.0/aws.zip
Шаг 6
Распакуйте архив в папку aws.
$ unzip aws.zip -d aws
Шаг 7
Отредактируйте файл 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";
Думаю что настройки понятны всем. Обязательно нужно указать регион. Если у вас несколько дисков, то можно их всех добавить в массив.
Шаг 8
Давайте проверим как он работает.
$ ./backup.php
Шаг 9
Откройте панель управления AWS и убедитесь что Snapshot был создан.
Шаг 10
Добавте задачу в крон. Причем не важно как часто она будет исполняться. Даже если вы поставите ее один раз в минуту, то создаваться snapshot будет только по указоному времени в настройках. Но естественно если в настройках вы указали 12 hours
а задачу крон поставили раз в 24 часа, то это не будет работать. Нужно убедиться, что задача крона срабатывает соответственно настройкам. Для моего примера раз в 24 часа достаточно.
* 23 * * * /usr/local/ec2/backup.php
Автор: Serhioromano