new

mxBackup

Backup файлов и БД MODX: AES-256 и безопасная dev-копия для разработки
Версия 2.4.0-rc
Дата выпуска 11.08.2026
Загрузки 0
Просмотры 24

mxBackup создаёт полноценные резервные копии сайта MODX: файлы, структуру и данные MySQL — в одном ZIP или tar.gz архиве. Содержимое ZIP можно защитить AES-256 паролем.

Для переноса сайта на стенд есть отдельный dev-профиль: сессии удаляются, а персональные данные MODX и miniShop2 заменяются стабильными тестовыми значениями. Если безопасную маскировку или шифрование применить нельзя, архив не создаётся.

  • production- и обезличенные development-копии;
  • AES-256 шифрование содержимого ZIP с проверкой результата;
  • запуск из manager, CLI и cron;
  • переносимые файловые профили и правила;
  • include/exclude-правила для файлов и таблиц;
  • собственные правила маскирования, включая JSON path;
  • история запусков, manifest, checksum и retention;
  • логирование через mxLogger со стандартным журналом MODX как fallback;
  • preflight и восстановление файлов и базы данных с обязательным страховочным backup;
  • блокировка параллельных запусков и атомарная публикация архива;
  • email-отчёт и вложение небольших архивов.

Пакет подходит для аварийного резервирования и восстановления, подготовки безопасных копий для разработчиков и регулярных задач cron. Большие копии рекомендуется запускать через CLI.

mxBackup 2.4.0-rc (2026-08-11)

  • CLI показывает ход работы. Backup и restore объявляют стадии («[3/5] Дамп базы»), считают таблицы, файлы, байты SQL и отправленные в S3 килобайты. Раньше прогон на большом сайте молчал минутами, и отличить работу от зависания было нечем.
  • Индикация идёт в STDERR, поэтому JSON в STDOUT остаётся машиночитаемым, а конвейеры и парсеры вывода продолжают работать как прежде.
  • Вне терминала (cron, лог, письмо) строка не перерисовывается: печатаются только начало и итог каждой стадии с длительностью — по ним видно, на чём именно оборвался неудачный прогон. Отключается флагом --no-progress.
  • Страховочная копия внутри restore печатает свои стадии отдельной вложенной лентой с отступом, а не подмешивается к стадиям восстановления.
  • Исправлено: ZIP-архив с записью по имени site (файл вместо каталога) ронял восстановление обращением к неопределённой переменной вместо понятной ошибки.
  • Исправлено: восстановление падало с «MySQL server has gone away» на записи страховочной копии в историю. Пока распаковывался архив, сервер закрывал простаивающее соединение по wait_timeout, и первый же запрос после этого не проходил. Соединение теперь пингуется во время долгих стадий и поднимается заново, а обращения к истории запусков повторяются после переподключения. Внутри consistent snapshot переподключения нет: там обрыв прерывает дамп с явной ошибкой, чтобы архив не собрался из разных состояний базы.
  • Функционально линия совпадает с 1.7.0-rc для MODX 2; общее ядро различается только номером версии в manifest.

mxBackup 2.3.0-rc (2026-08-11)

  • Условие «Применять только при условии» теперь редактируется прямо в форме правила: пары «колонка строки — маска значения» задаются таблицей с редактированием по клику, строки добавляются и удаляются кнопками. Раньше условие можно было задать только правкой файла профиля, а форма его лишь сохраняла.
  • Подписи и подсказки блока условий переписаны под смысл: колонка называется «Колонка строки», маска — «Значение подходит под маску», под таблицей приведены примеры на modx_system_settings (secret поймает paymentSecret, а !*_min_length оставит нетронутой настройку password_min_length). Пустая таблица прямо говорит, что правило применится ко всем строкам.
  • Строка условия с незаполненной колонкой или пустой маской подсвечивается, и правило не сохраняется: раньше такая строка молча выпадала.

mxBackup 2.2.3-rc (2026-08-11)

  • Обезличивание настроек добралось до пользовательских переопределений. В 2.2.2-rc правило для modx_user_settings было записано с опечаткой в имени таблицы, а modx_user_group_settings не упоминался вовсе: настройки, переопределённые у пользователя или у группы, уезжали в копию как есть. Имена сверены со схемой ядра MODX 2 и MODX 3 — они разнобойные (system_settings и user_settings во множественном числе, context_setting в единственном), и сравнение точное, поэтому лишняя буква означала не мягкое срабатывание, а полное отсутствие правила.

mxBackup 2.2.2-rc (2026-08-11)

  • Обезличенная копия больше не увозит секреты из настроек MODX. Ключи платёжных шлюзов, пароль SMTP, токены рассылок и аналитики лежат в modx_system_settings вперемешку с безобидными настройками, и до сих пор уезжали в dev-копию как есть. Теперь значение стирается у настроек, чьё имя похоже на пароль, токен, secret, api_key, private_key, license_key, access_key, auth_key или заканчивается на _credentials; то же применяется к переопределениям в modx_context_setting и modx_user_setting. Остальная конфигурация остаётся, и сайт из копии поднимается.
  • Настройки, лишь названные похоже, остаются рабочими: password_min_length, password_generated_length, allow_manager_login_forgot_password, token_ttl и прочие тайминги, лимиты и флаги не стираются — иначе копия поднималась бы с обнулённой политикой паролей.
  • Правило маскирования умеет условие по соседним колонкам строки (ключ when в профиле): 'when' => ['key' => ['*secret*']] вычистит колонку value только у подходящих строк. Так закрываются таблицы вида «имя в одной колонке, значение в другой» — настройки, метаданные, key-value-справочники сторонних пакетов. Шаблон с ! в начале — исключение: ['*token*', '!*_ttl'] заденет токены, но не тайминги. Условие задаётся в файле профиля; форма правил в manager его не редактирует, но при правке правила сохраняет.
  • Dry-run отличает условные колонки от безусловных: в отчёте они выведены отдельным списком conditional_columns, чтобы «здесь сотрут всё» не путалось с «сотрут у части строк».
  • Функционально линия совпадает с 1.5.2-rc для MODX 2; общее ядро различается только номером версии в manifest.

mxBackup 2.2.1-rc (2026-08-10)

  • В форме профиля появился собственный каталог архивов. Пустое поле наследует общий mxbackup.storage_path; разные профили теперь можно направить в разные локальные каталоги без ручной правки PHP-конфигурации.
  • Функционально линия совпадает с 1.5.1-rc для MODX 2; общее ядро различается только номером версии в manifest.

mxBackup 2.2.0-rc (2026-08-10)

  • tar.gz теперь собирается потоково за один проход без промежуточного несжатого TAR. На контрольном наборе 6652 файла / 208 МБ упаковались за 1,2 секунды вместо прежних 30+ минут.
  • Перед запуском из manager пакет показывает количество и суммарный размер файлов, свободное место и предупреждает, если большую копию надёжнее запустить через CLI.
  • Выполняющийся backup можно безопасно остановить из manager или командой mxbackup.php cancel. Отмена проверяется при обходе файлов, дампе БД, упаковке, подсчёте checksum и выгрузке в S3; временные файлы удаляются, запуск получает статус «Остановлен».
  • Добавлена CLI-команда estimate для предварительной оценки состава и свободного места без создания архива.
  • Функционально линия совпадает с 1.5.0-rc для MODX 2; общее ядро различается только номером версии в manifest.

mxBackup 2.1.0-rc (2026-08-09)

  • Архив можно выгружать в S3 или совместимое хранилище (MinIO, Selectel, Yandex Object Storage). Копия, лежащая на той же машине, что и сайт, защищает от испорченной базы и неудачного обновления, но не от потери самой машины.
  • Хранилище задаётся профилем, а не общей настройкой: боевая копия уезжает с сервера, а обезличенная копия для разработки остаётся под рукой — платить за её хранение и трафик незачем.
  • Ключи доступа необязательны. Если поля пустые, пакет берёт доступ из переменных окружения или из роли машины в облаке — тогда на сервере не хранится ни одного ключа.
  • Неудачная выгрузка не считается провалом копирования: архив создан и лежит на диске, в отчёте появляется предупреждение. Локальные копии в этом случае не удаляются.
  • После успешной выгрузки на диске остаётся столько копий, сколько указано в профиле (минимум одна): остальные уже в облаке.
  • Своя глубина хранения в облаке. По умолчанию пакет там ничего не удаляет — если у хранилища есть собственное правило истечения, две несогласованные ротации хуже одной.
  • Восстановление умеет забирать архив прямо из хранилища: mxbackup.php restore --from-remote=ИМЯ_АРХИВА.
  • Новые команды: remote-list (что лежит в хранилище) и remote-check (доступ на чтение, а с ключом --write — и на запись).
  • Проверка конфигурации в интерфейсе и в консоли теперь охватывает и настройки хранилища: ошибка видна до копирования, а не после получаса упаковки.
  • Функционально линия сравнялась с 1.4.0-rc для MODX 2: ядро в обеих линиях снова совпадает дословно.

mxBackup 2.0.0-beta (2026-08-06)

  • Первый выпуск линии для MODX Revolution 3. Мажор означает платформу: 2.x — MODX 3, 1.x — MODX 2; функционально версии равны.
  • Интеграция с платформой переписана под тройку: PSR-4 модель MxBackup\Model, сервис mxbackup в контейнере MODX и короткий фасад $modx->mxbackup, namespaced-процессоры, коннектор принимает полное имя класса процессора.
  • Интерфейс менеджера переписан с ExtJS на Vue 3 и использует общий стек пакета VueTools; без него страница сообщает о недостающей зависимости.
  • Проверка конфигурации выведена в интерфейс: раньше процессор существовал, но вызвать его можно было только из CLI.
  • Восстановление в интерфейсе стало явно двухшаговым: проверка архива, затем ввод кода подтверждения; кнопка запуска остаётся недоступной, пока код не совпал.
  • Массовые операции над таблицами подписывают свою область действия: с непустым поиском они меняют только найденные таблицы.
  • Артефакты запуска, убитого извне (обрыв SSH, лимит хостера, нехватка памяти), больше не остаются в каталоге архивов. Раньше там навсегда оставались недоделанный архив и рабочий каталог с незашифрованным дампом базы: аварийное завершение минует штатную уборку. Теперь следующий запуск удаляет такие остатки и сообщает об этом в отчёте.
  • Ядро (выбор файлов и таблиц, дамп, обезличивание, manifest, retention, восстановление) перенесено без изменений и остаётся общим с линией MODX 2.
  • Требования: MODX 3.0+, PHP 8.1+.

mxBackup 1.2.1-rc (2026-08-06)

  • Правило хранения по возрасту больше не удаляет свежие архивы: количество из mxbackup.retention_count теперь несносимый минимум. Раньше остановившийся cron через mxbackup.retention_days мог оставить сайт вовсе без резервных копий.
  • Кнопка «Сохранить» на вкладке «Настройки» больше не уходит за границу панели при изменении ширины окна или сворачивании дерева.
  • Восстановлена иконка кнопки «Обновить» в истории запусков.
  • Режимы профиля в русском интерфейсе подписаны по-русски: «Боевой», «Обезличенный», «Пользовательский»; служебные значения prod, dev и custom не изменились.
  • Удалены неиспользуемые ключи лексикона, оставшиеся от первой версии интерфейса.
  • В readme пакета исправлено устаревшее описание хранения профилей: они лежат в PHP-файлах каталога mxbackup.config_dir, а не в таблицах.

mxBackup 1.2.0-rc (2026-08-05)

  • Добавлено восстановление файлов и базы данных из ZIP, tar.gz и AES-256 ZIP через CLI и историю CMP.
  • Preflight проверяет формат, manifest, checksum архива/SQL, пути элементов и совместимость основной версии MODX.
  • Перед изменениями автоматически создаётся страховочный production-backup текущего сайта.
  • Файлы восстанавливаются атомарно в merge-режиме; SQL importer принимает только выражения, создаваемые mxBackup.
  • Добавлено отдельное право mxbackup_restore и подтверждение восстановления кодом из checksum архива.

mxBackup 1.1.0-beta (2026-08-05)

  • Добавлено AES-256 шифрование содержимого ZIP-архивов с fail-closed проверкой результата.
  • Пароль шифрования настраивается отдельно для каждого профиля и не возвращается в CMP, отчёты или manifest.
  • mxLogger используется как основной журнал запусков и ошибок; при его отсутствии или сбое пакет пишет в стандартный журнал MODX.
  • Профили и пользовательские правила перенесены из БД в переносимые PHP-файлы.
  • CMP профилей, таблиц и обезличивания переработан без редактирования сырого JSON.

mxBackup 1.0.0-beta (2026-08-05)

  • Первый публичный выпуск для MODX Revolution 2.
  • Production- и обезличенные development-бэкапы файлов и MySQL.
  • CLI, manager UI, профили, правила, история, retention и email-отчёты.

Последние обсуждения в сообществе MODX.pro