Евгений Горяев
aka floor12

floor12/yii2-module-backup: Модуль для создания, восстановления и удобного управления бекапами.

Build Status Scrutinizer Code Quality Latest Stable Version Latest Unstable Version Total Downloads License

Функции модуля

Это модуль разработан чтобы организовать работу с бекапами вашего приложения силами самого Yii2 фреймворка. С помощью этого модуля возможно создавать, восстанавливать, удалять и скачивать бекапы файлов и баз данных при помощь веб-интерфейса, консольного интерфейса и REST-API. Для того, чтобы не зависить от базы данных приложения, модуль использует свою sqlite базу, размещенную в папке для хранения бекапов.

i18n

На данный момент модуль поддерживает русский и английский языки.

yii2 backup module

Установка

Чтобы добавить модуль в свое приложение выполните команду:

 $ composer require floor12/yii2-module-backup

или добавьте эту строку в секцию require вашего composer.json.

 "floor12/yii2-module-backup": "dev-master"

После этого необходимо зарегистрировать модуль с необходимыми параметрами в секции modules конфига приложения:

 'modules' => [
             'backup' => [
                 'class' => 'floor12\backup\Module',
                 'administratorRoleName' => '@',
                 'configs' => [
                     [
                         'id' => 'main_db',
                         'type' => BackupType::DB,
                         'title' => 'Main database',
                         'connection' => 'db',
                         'limit' => 10
                     ],
                     [
                         'id' => 'main_storage',
                         'type' => BackupType::FILES,
                         'title' => 'TMP folder',
                         'path' => '@app/tmp',
                         'limit' => 2
                     ]
                 ]
             ]
             ],
         ],
     ...

Параметры работы модуля, которые можно задать через конфиг приложения:

  • administratorRoleName - роль, которой разрешен доступ в web-контроллер модуля
  • backupFolder - alias к папке для хранения бекапов (по умолчанию @app/backups)
  • chmod - если этот параметр задан, команда chmod с параметрами из значения этого поля будет выполнена после создания бекапа
  • authTokens - массив токенов для доступа к REST-контроллеру
  • ionice - значение этого параметра будет прописано перед командой запуска бекапа (например iotince -c3 помещенное в этот параметр позволит запускать бекап с приоритетом IDLE для IO диска)
  • adminLayout - смена дефотного main лейаута на любой другой по необходимости

И главный и необходимый параметр конфигурации этоconfigs - в этом массиве перечислены объекты для бекапа (базы данных и папки). Каждый элемент должен содержать в себе следующие поля:

  • id - индификатор бекапа без пробелов (например main_db, files_folder, user_images_data и т.д.)
  • type - тип бекапа: база данных или папка на диска
  • title - читаемое название для бекапа для отображения в веб-интерфейсе
  • limit - кол-во сохраненных копий (0 - никогда не удалять старые копии)
  • connection - в случае бекапа базы данных здесь необходимо указать имя соединения базы данных в Yii2 приложении (по дефолту это 'db')
  • path - алиас пути для бекапа, в случае бекапа папки на диске

Использование

WEB-интерфейс

Модуль иметт веб-интерфейс для работы с бекапами. Но доступен по адресу backup/admin or backup/admin/index. С его помощью воможно создавать, восстанавливать, удалять и скачивать бекапы.

Консольный интерфейс

Для просмотра списка всех существубщих бекапов выполните

$ ./yii backup/console/index>

Для создания нового бекапа выполните

$ ./yii backup/console/create <backup_config_id>

backup_config_id это индификатор конфигурации бекапа.

Для восстановления из бекапа выполните

$ ./yii backup/console/restore <backup_id>

backup_id это индификатор существующего бекапа

REST-api

По умолчанию REST-контроллер доступен по адресу /backup/api. Для доступа к нему необходимо доабвить к запросу заголовокBackup-Auth-Token содержащий один из токенов, указанных в конфиге модуля (параметр authTokens);

Список существующих бекапов

GET /backup/api/index

Пример ответа

[
  {
    "id": 8,
    "date": "2019-11-11 07:02:23",
    "status": 1,
    "type": 1,
    "config_id": "main_storage",
    "config_name": "TMP folder",
    "filename": "main_storage_2019-11-11_07-02-23.zip",
    "size": 4183
  },
  {
    "id": 7,
    "date": "2019-11-11 06:56:36",
    "status": 1,
    "type": 0,
    "config_id": "main_db",
    "config_name": "Main database",
    "filename": "main_db_2019-11-11_06-56-36.gz",
    "size": 753
  },

]

Создание нового бекапа

POST /backup/api/backup?config_id=<backup_config_id>

Успешный ответ:

{"result":"success"}

Восстановление из бекапа

POST /backup/api/restore?id=<backup_id>

Успешный ответ:

{"result":"success"}

Удаление бекапа

DELETE /backup/api/delete?id=<backup_id>

Успешный ответ:

{"result":"success"}

Получение файла бекапа

GET /backup/api/get?id=<backup_id>

В ответ будет отдан файл с бекапом.