
- MODX 2
- MODX 3
- PHP 7.4
- PHP 8.1


Профиль — это именованный набор правил: что попадает в архив, в каком формате и что делается с персональными данными. Профиль выбирается при каждом запуске (--profile=имя или выпадающий список в менеджере), а если не указан — берётся из настройки mxbackup.default_profile.
Из коробки создаются два профиля.
| Профиль | Режим в менеджере | Значение в файле | Назначение |
|---|---|---|---|
prod | Production | prod | Полная аварийная копия. Данные не изменяются. |
dev | Development | dev | Копия для разработки. Обезличивание включено принудительно. |
Режим (mode) — не просто подпись: обезличивание применяется только в режиме Development, и в таком профиле стандартные правила нельзя выключить. Третий режим — «Пользовательский» (custom), для собственных профилей без обезличивания.
Подписи в менеджере и значения в файле
В интерфейсе режимы называются Production, Development и Пользовательский, а в файле профиля и в отчётах запуска те же режимы записаны как prod, dev и custom. Дальше в документации используются значения из файла — именно они видны в --profile, манифесте и истории.
Каждый профиль — отдельный PHP-файл в каталоге из системной настройки mxbackup.config_dir. По умолчанию это core/config/mxbackup/profiles/, в значении допустим плейсхолдер {core_path}.
prod.php → профиль prod. Допустимы латинские буквы, цифры, _ и -.0640.Каталог профилей — не место для webroot
В файле профиля лежит пароль шифрования архива в открытом виде. Каталог должен быть недоступен по HTTP; путь по умолчанию внутри core/ этому условию удовлетворяет.
<?php
return [
'name' => 'dev',
'description' => 'Копия для разработки',
'mode' => 'dev',
'active' => true,
'format' => 'zip',
'storage_path' => '/home/site/backups/dev',
'encryption' => ['enabled' => true, 'password' => '…'],
'files' => [
'include' => ['*'],
'exclude' => ['core/cache/', 'core/packages/', 'core/config/', 'assets/cache/'],
],
'database' => [
'include_tables' => ['*'],
'exclude_tables' => ['modx_session'],
],
'masking' => ['standard' => true, 'rules' => []],
'createdon' => 1754400000,
'editedon' => 1754400000,
];Профиль с active => false не предлагается для запуска. Встроенные prod и dev нельзя переименовать или удалить.
Три вкладки Компоненты → mxbackup отвечают за состав профиля.
MODX 2: половина действий живёт в контекстном меню
В линии для MODX 2 интерфейс построен на стандартных гридах менеджера, а в них правка, удаление и просмотр открываются щелчком правой кнопкой мыши по строке — кнопок для этого в панели нет. Что где спрятано:
| Вкладка | Правая кнопка по строке | Другие способы |
|---|---|---|
| Профили | «Редактировать» | кнопка «Добавить профиль» в панели |
| Таблицы БД | меню нет | обычный щелчок по строке включает и выключает таблицу |
| Обезличивание | «Добавить правило» / «Изменить правило», «Удалить» | кнопка «Очистить таблицу в dev-копии» в панели |
| История | «Детали запуска», «Восстановить из архива» | двойной щелчок по строке открывает отчёт |
Пункты, требующие права mxbackup_manage или mxbackup_restore, у остальных пользователей в меню не появляются.
MODX 3: действия видны в строке
В линии для MODX 3 контекстных меню нет — у каждой строки справа стоят кнопки действий, а таблицы включаются переключателем:
| Вкладка | Как действовать |
|---|---|
| Профили | кнопки «Изменить» и «Удалить» в строке, «Добавить профиль» — над таблицей; двойной щелчок по строке тоже открывает правку |
| Таблицы БД | переключатель в колонке «В архиве»; изменение сохраняется сразу |
| Обезличивание | кнопки правки и удаления правила в строке, «Очистить таблицу в dev-копии» — над таблицей |
| История | кнопки «Детали запуска» и «Восстановить из архива» в строке; двойной щелчок открывает отчёт |
Кнопки, требующие права mxbackup_manage или mxbackup_restore, у остальных пользователей не отображаются.
Режим, формат архива, собственный каталог хранения, шифрование и пароль, флаг «Активен», а также include/exclude для файлов сайта. Пустой каталог наследует общую системную настройку mxbackup.storage_path. Профиль создаётся кнопкой «Добавить профиль», а редактируется через контекстное меню строки (MODX 2) или кнопкой «Изменить» в строке (MODX 3). Правка требует права mxbackup_manage.
Грид реальных таблиц базы с числом строк, размером, движком и признаком «в архиве». Поиск — по любой части имени, пагинация серверная. В MODX 2 таблица включается и выключается щелчком по строке, после чего изменения сохраняются кнопкой в панели; в MODX 3 — переключателем в строке, который сохраняет выбор сразу.
Кнопки «Включить все» и «Исключить все» действуют на результат текущего поиска: с непустым запросом меняются только найденные таблицы, с пустым — все.
Отдельно задаётся поведение для таблиц, которых на момент настройки ещё не существовало:
| Режим «Новые таблицы» | Что записывается в профиль | Поведение |
|---|---|---|
| Добавлять автоматически | include_tables = ['*'], невыбранные попадают в exclude_tables | Новая таблица войдёт в архив сама |
| Только выбранные | include_tables = явный список, exclude_tables пуст | Новая таблица в архив не войдёт, пока её не отметят |
Для сайта с боевыми данными безопаснее первый режим: он не забудет новую таблицу, появившуюся после установки очередного пакета.
Правила подмены данных для режима Development — подробно на странице Обезличивание.
include и exclude — списки путей и масок относительно корня сайта, по одному на строку. Правило простое: сначала проверяются исключения, и если путь попал под любое из них, файл в архив не идёт независимо от include.
| Запись | Что означает |
|---|---|
* | все файлы (значение include по умолчанию) |
core/cache/ | каталог целиком; завершающий / обязателен |
assets/uploads/*.zip | маска в стиле fnmatch; * не переходит через / |
assets/images/logo.png | конкретный файл |
Каталог, попавший под исключение, не обходится вообще — это заметно экономит время на core/cache/.
Дополнительно:
Формат задаётся в профиле (tar.gz или zip) и может быть переопределён настройкой, файлом конфигурации или флагом --format — см. Системные настройки.
| Формат | Требования | Особенности |
|---|---|---|
tar.gz | zlib для создания, Phar для восстановления | Значение по умолчанию. Пишется в потоковом режиме без промежуточного несжатого TAR; шифрование недоступно. |
zip | ext-zip | Поддерживает AES-256 для содержимого файлов. |
Чтобы зашифровать архив: выберите формат zip, включите шифрование в профиле и задайте пароль. Требуется ext-zip, собранный с libzip 1.2 или новее; после записи архива пакет проверяет, что без пароля содержимое действительно не читается, и при неудаче не публикует архив.
0640. Это защита архива при передаче, а не при компрометации сервера.mxbackup.config_dir целевого сайта.validate-config, затем dry-run — состав таблиц на другом сайте почти наверняка отличается.Префикс таблиц
В правилах обезличивания используются маски вида *_users, поэтому они переносятся между сайтами с разными префиксами таблиц. А вот явные списки include_tables/exclude_tables записываются с реальными именами и после переноса требуют проверки.
Профиль можно завести двумя равноправными способами: кнопкой «Добавить профиль» в менеджере или просто положив PHP-файл в каталог профилей — например, скопировав prod.php под новым именем и поправив содержимое. Каталог перечитывается при каждом обращении, поэтому новый файл виден в CMP и в CLI сразу.
При ручном создании учтите четыре правила:
name внутри: при чтении name принудительно заменяется на имя файла без расширения;_ и -; файл с другим именем при обходе каталога просто пропускается;mode без значения — это custom, то есть без обезличивания; отсутствующий active считается включённым.Правка в CMP перезаписывает файл целиком
Сохранение профиля через интерфейс переписывает файл заново: комментарии, форматирование и порядок ключей не сохраняются. Для профилей, которые лежат в git, это заметно в diff.
Типичные сценарии собственного профиля:
* из файлов, оставив дамп;assets/ с тяжёлыми загрузками, оставив код и базу;storage_path или заполнить «Каталог архивов профиля» в менеджере, например для копий, которые забирает внешний скрипт. Пустое значение означает наследование общего mxbackup.storage_path.После создания профиля обязательно выполните для него dry-run.