
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 2 | MODX 3 | |
|---|---|---|
| Версии пакета | 1.x | 2.x |
| MODX Revolution | 2.6–2.8 | 3.0+ |
| PHP | 7.4+ | 8.1+ |
| Интерфейс в менеджере | ExtJS | Vue 3 |
| Дополнительно | — | пакет VueTools — на нём работает интерфейс |
Общее для обеих линий:
| Значение | |
|---|---|
| СУБД | MySQL/MariaDB через PDO MySQL |
Формат tar.gz | расширения Phar и zlib |
Формат zip | расширение ext-zip |
| Шифрование AES-256 | ext-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, а интерфейс менеджера удобен для настройки, проверки состава и просмотра истории.
