К содержанию

gtsBackup - Бекап сайта MODX на ваш компьютер

После инцидента с бегет не понятно где хранить беккапы сайтов. Решил беккапить на своем компе. И подготовил компонент для этого.
Бекап сайта MODX на ваш компьютер. Сайт по токену собирает полный или дифференциальный архив файлов и дамп базы, клиент на компьютере сам забирает их каждый день, проверяет, хранит и удаляет старые. На компьютере с Windows ничего ставить не нужно.
Внимание. Нужен пакет gtsAPI 1.1.3-beta или новее — установите его до gtsBackup, иначе установщик MODX остановится на окне «Зависимости». Проверен на MODX 2.8 и MODX 3.2, PHP 7.3–8.3, MySQL 5.7 и MySQL 8. Клиент для Windows работает на Windows 10 (версия 1803 и новее) и Windows 11.

Что умеет
— Полный и дифференциальный бекап файлов. Дифференциальный содержит всё, что изменилось с момента своего полного, поэтому для восстановления нужны ровно два архива. Удалённые на сайте файлы при восстановлении тоже удаляются.
— Дамп базы через mysqldump, а на хостинге, где запуск программ запрещён, — средствами PHP. После скачивания клиент проверяет, что дамп дошёл до конца.
— Большие сайты. Архив собирается на сервере порциями по 20 секунд и не упирается в таймауты веб-сервера. Если связь оборвалась, скачивание продолжается с того же места.
— Токен вместо пароля. Бессрочный, умеет только снимать бекап, создаётся в админке и показывается один раз. Отключить компьютер — снять у токена галочку. По желанию — только HTTPS и белый список IP.
— Клиент для Windows без установки: только встроенные PowerShell, curl и tar. Для Linux и macOS — тот же клиент на PHP с теми же командами.
— Сам по расписанию. При подключении первого сайта клиент ставит задачу в Планировщик Windows от текущего пользователя: каждый день, при входе в Windows и с догоном пропущенного запуска. Права администратора не нужны.
— Ротация. По умолчанию полный бекап раз в неделю, между ними дифференциальные, хранятся 4 недели. Сроки задаются для каждого сайта отдельно.
— Предупреждение о пропусках. Если у сайта нет удачного бекапа два дня, поверх всех окон появляется окно со списком таких сайтов. В админке у каждого токена видно, когда этот компьютер последний раз снял бекап.
— Восстановление одной командой в пустую папку: для дифференциального клиент сам возьмёт его полный. Архивы — обычный tar.gz, открываются любым архиватором, русские имена файлов сохраняются.
— Папки рядом с сайтом, например хранилище файлов и ключи компонентов, добавляются в бекап настройкой.
— Открытый протокол. Описание обмена лежит рядом с клиентом: по нему можно написать свой клиент.

Быстрый старт
Установите gtsAPI, затем gtsBackup.
Откройте Компоненты → Бекапы → Токены → «Создать токен» и укажите название, например чей это компьютер. В окне будут готовая команда, ссылка на клиент и сам токен — он показывается один раз.
Скачайте клиент по ссылке и распакуйте, например в C:\gtsBackup.
В этой папке откройте обычную консоль (cmd) и выполните команду из окна:
gtsbackup.cmd add mysite https://ваш-сайт.ru/assets/components/gtsbackup/action.php gbk_… --now
Команда проверит связь, покажет, какая папка сайта бекапится, поставит ежедневную задачу и сразу снимет первый полный бекап. Бекапы лягут в C:\gtsBackup\backups\mysite\.
Второй сайт подключается его командой add: клиент заново качать не нужно, задача уже бекапит все сайты.
Проверка: gtsbackup.cmd list — что снято и что будет дальше, gtsbackup.cmd check — нет ли пропусков.

Как хранятся бекапы
Бекапы лежат цепочками: папка цепочки названа временем полного бекапа, внутри — полный и его дифференциальные.
backups\mysite\
    20261112-033000\              цепочка
        full\                     полный: файлы + база
        diff-20261113-033000\     дифференциальные этого полного
    20261119-033000\
        full\
    gtsbackup.log
Старые цепочки удаляются целиком после каждого удачного бекапа. Неудачный бекап ничего не удаляет.

Что бекапится на сайте
Корень сайта MODX — папка, где лежат index.php и config.core.php. Если core вынесен за корень, он добавляется сам. Другой корень, исключения и дополнительные папки задаются в системных настройках gtsbackup_*. Если сайт открыт снаружи по другому адресу (прокси, шлюз), укажите его в gtsbackup_public_url — окно токена покажет правильную команду.
Свои файлы gtsBackup держит только в core/components/gtsbackup/ и assets/components/gtsbackup/. Архив перед скачиванием собирается в core/components/gtsbackup/tmp/: нужно свободное место размером с архив сайта, вынести папку можно настройкой gtsbackup_tmp_path. При удалении пакета папка удаляется вместе с ним, там только временное.

Linux и macOS
Нужен PHP 7.4+ с расширениями curl и zlib. Команды те же: php gtsbackup.php add …, расписание — cron:
30 3 * * * php /opt/gtsbackup/gtsbackup.php scheduled
Лицензия
Код открыт: github.com/tuniekov/gtsBackup. Пользоваться можно после покупки, лицензия на один сайт, клиент ставится на любое число своих компьютеров. Изменять код для своих сайтов можно.
https://gtsstore.ru/packages/gtsbackup.html
Ссылка на модсторе после модерации.
Александр Туниеков
modx.pro
11
Поблагодарить автора Отправить деньги
Реклама

Комментарии: 2

Артур Шевченко
5 минут назад
А почему ты решил написать своё решение, а не взял готовое?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
2