Skip to content
mxBackup
mxBackup
Резервное копирование сайта MODX Revolution 2 и 3 — архив файлов и SQL-дамп из менеджера, CLI и cron, обезличенные копии для разработки, шифрование AES-256 и безопасное восстановление.
  1. Компоненты
  2. mxBackup

mxBackup

Резервное копирование сайта MODX Revolution 2 и 3. Пакет собирает архив файлов сайта и SQL-дамп базы данных, кладёт рядом манифест с контрольными суммами и пишет историю запусков. Запускается из менеджера, из консоли и из cron — одним и тем же кодом и с одной и той же конфигурацией.

Второе назначение — копия для разработчика: профиль dev в момент дампа заменяет персональные данные стабильными тестовыми значениями и полностью очищает таблицу сессий, поэтому базу с боевого сайта можно отдать на локальную машину или в отдел разработки.

Зачем

Штатных средств резервного копирования в MODX нет, а типовые решения хостинга снимают копию всего аккаунта целиком: восстановить из неё один сайт или перенести базу без персональных данных не получится. mxBackup закрывает четыре задачи:

  • аварийная копия — файлы и база в одном архиве с манифестом и контрольной суммой, по расписанию и с автоматической ротацией старых копий;
  • копия для разработки — та же процедура, но с обезличиванием: пользователи MODX, профили, сессии, заказы и адреса miniShop2 в архив попадают уже подменёнными;
  • восстановление — проверка архива перед запуском, обязательная страховочная копия текущего сайта и атомарная замена файлов;
  • передача копии — содержимое ZIP-архива можно зашифровать AES-256, чтобы отправить его по недоверенному каналу.

Что внутри

  • Профили — именованные наборы правил: что попадает в архив из файлов и таблиц, в каком формате и с каким обезличиванием. Хранятся отдельными PHP-файлами и переносятся между сайтами копированием. См. Профили.
  • Обезличивание — встроенные правила для MODX и miniShop2 плюс собственные правила по таблице, колонке или пути внутри JSON. См. Обезличивание.
  • Интерфейс в менеджере — профили, состав таблиц, правила обезличивания, настройки и история запусков; JSON руками править не нужно.
  • CLI — семь команд для запуска, проверки и восстановления; ровно то, что ставится в cron. См. CLI и cron.
  • Проверка состава без записи архива (dry-run) — показывает, какие таблицы войдут в копию, сколько колонок будет обезличено и какие таблицы будут очищены.
  • Хранение — каталог вне webroot, блокировка параллельных запусков, ротация по возрасту и количеству, отчёт на почту.
  • Восстановление — предварительная проверка архива, код подтверждения, автоматическая страховочная копия и отдельное право доступа. См. Восстановление.

Требования

Пакет выходит двумя линиями. Ядро у них общее — различаются платформенный слой и интерфейс в менеджере, — поэтому эта документация описывает обе, а различия отмечены врезками. Мажорная версия означает платформу.

MODX 2MODX 3
Версии пакета1.x2.x
MODX Revolution2.6–2.83.0+
PHP7.4+8.1+
Интерфейс в менеджереExtJSVue 3
Дополнительнопакет VueTools — на нём работает интерфейс

Общее для обеих линий:

Значение
СУБДMySQL/MariaDB через PDO MySQL
Формат tar.gzрасширения Phar и zlib
Формат zipрасширение ext-zip
Шифрование AES-256ext-zip, собранный с libzip 1.2 или новее
Журнал (необязательно)mxLogger

Версия для MODX 3

Интерфейс в менеджере построен на Vue 3 и берёт общий фронтенд-стек из пакета VueTools. Без него CLI и запуск по расписанию работают полностью, а страница компонента сообщит, какого пакета не хватает.

Сервис пакета доступен из кода как $modx->services->get('mxbackup') или через короткий фасад $modx->mxbackup.

Формат архива, манифест и файлы профилей у линий одинаковые, поэтому настройки переносятся копированием файлов. А вот восстанавливать копию между мажорными версиями MODX нельзя: preflight сверяет основную версию платформы и отказывает.

Установка

Поставьте transport-пакет через Пакеты → Установить пакет в менеджере MODX или скачайте его из релизов на GitHub — линия MODX 2, линия MODX 3. На modstore обе линии живут на одной карточке: установщик отдаёт версию, подходящую вашей версии MODX.

Установка идемпотентна: повторная установка и обновление не затирают уже настроенное.

Что создаётся при установке

ЧтоПодробности
Таблица mxbackup_runИстория запусков: профиль, статус, путь и контрольная сумма архива, манифест и отчёт. Это единственная таблица пакета.
Файлы профилейprod.php и dev.php в каталоге из настройки mxbackup.config_dir; по умолчанию — core/config/mxbackup/profiles/. См. Профили.
Системные настройки11 настроек в областях «Общие», «Почта» и «Хранение». См. Системные настройки.
Права доступаШаблон политик mxbackupTemplate, политика mxbackupDefault и пять прав: load, mxbackup_view, mxbackup_manage, mxbackup_run, mxbackup_restore. См. Права и безопасность.
Пункт менюКомпоненты → mxbackup, доступен по праву mxbackup_view.

Политика доступа никому не назначается автоматически

Резолвер только создаёт политику mxbackupDefault. Пока администратор не выдаст права своей группе, пакет доступен единственному пользователю — sudo. Как выдать доступ, описано в разделе Права и безопасность.

Исходный код

Линии лежат в отдельных репозиториях — ядро в них построчно одинаково, различаются платформенный слой, процессоры и интерфейс:

ЛинияРепозиторий
MODX 2 (1.x)github.com/ShevArtV/mxbackup
MODX 3 (2.x)github.com/ShevArtV/mxbackup3

Обновление с версий до 1.1.0

Касается только линии MODX 2: до версии 1.1.0 профили и правила обезличивания лежали в таблицах mxbackup_profile и mxbackup_rule. Установщик переносит их в PHP-файлы профилей и удаляет прежние таблицы только после того, как перенеслись все записи. Профиль, файл которого уже существует, не перезаписывается.

Если миграция не удалась, прежние таблицы остаются на месте — обновление можно повторить после того, как причина устранена.

Первый запуск

Откройте Компоненты → mxbackup. На странице пять вкладок: «Профили», «Таблицы БД», «Обезличивание», «Настройки» и «История», а сверху — выбор профиля и кнопки запуска: создать копию и проверить состав. В линии для MODX 3 там же есть кнопка «Проверить конфигурацию» — та же проверка, что и команда validate-config в консоли.

Начните с проверки состава (dry-run) для профиля dev: архив не создаётся, а в истории появляется запись с составом таблиц и списком того, что будет обезличено и очищено. Дальше — Быстрый старт.

Большие копии запускайте из консоли

Веб-запуск ограничен таймаутами PHP и обратного прокси: копия крупного сайта не успеет завершиться до разрыва соединения. Штатный режим работы — CLI и cron, а интерфейс менеджера удобен для настройки, проверки состава и просмотра истории.