mibazarow.backupper

0

Описание

Модуль для автоматического резервного копирования Bitrix сайта на SCP/SSH

https://bazarow.ru

Языки

  • PHP100%
README.md

Модуль mibazarow.backupper — Резервное копирование на SCP сервер

⚠️ ВАЖНО: Модуль не достаточно протестирован. Используйте на свой страх и риск. Перед использованием на production сервере рекомендуется тщательное тестирование в тестовом окружении.


Полнофункциональный модуль для автоматического резервного копирования Bitrix сайта на SCP/SSH сервер с надежной передачей, управлением копиями и поддержкой больших файлов.

🎯 Основные возможности

Архив содержит всё для полного восстановления:

  • SQL дамп БД — полная база данных (таблицы, данные, структура)
  • Все файлы сайта — с исключением кэша и временных файлов (конфиги включены в состав сайта)

Расписание резервного копирования:

  • Встроенные агенты Bitrix для автоматического запуска
  • Настраиваемый интервал в минутах (по умолчанию 1440 = 1 день)
  • Регистрируется/удаляется автоматически при установке/удалении

Ручной запуск:

  • Кнопка "Создать резервную копию сейчас" на странице настроек
  • Вывод статуса выполнения (успех/ошибка)

Управление копиями:

  • Настраиваемое максимальное количество копий на сервере
  • Автоматическое удаление старых копий при превышении лимита
  • По умолчанию: 5 копий

Надежная передача:

  • Retry-логика: 3 попытки при ошибке подключения/передачи
  • MD5 верификация целостности файла на сервере
  • Проверка размера файла после отправки
  • Автоматическое переподключение при разрыве

Обработка больших файлов:

  • Поддержка архивов до 2GB
  • PHP лимиты увеличены: 3600 сек (1 час), 256MB памяти
  • Использование
    nice
    для снижения нагрузки на систему

📦 Состав архива

backup_2026-03-19_12-30-00.tar.gz │ ├─ database.sql ← SQL дамп БД └─ bitrix.bxstore.ru/ ← Все файлы сайта (кроме кэша) ├── index.php ├── bitrix/ │ ├── .settings.php (конфиги здесь) ├── .htaccess (конфиги здесь) ├── urlrewrite.php (конфиги здесь) ├── local/modules/ ├── upload/ └── ...

Размеры (пример): 500MB файлы + 50MB БД = 550MB → сжато ~165MB (70% эффективность)

🗂️ Временные файлы

На локальном сервере (во время создания):

/bitrix/backup/backupper_[timestamp]/ └── database.sql ← SQL дамп БД Жизненный цикл: 1-2 минуты (во время создания дампа) ✓ Автоматически удаляется после отправки /bitrix/backup/backup_*.tar.gz (сохраняется временно на диске) Жизненный цикл: 5-10 минут (время отправки на сервер) ✓ Автоматически удаляется после успешной отправки

На SCP сервере (постоянное хранилище):

/backup/ ├── backup_2026-03-19_12-30-00.tar.gz ✓ ├── backup_2026-03-19_11-30-00.tar.gz ✓ ├── backup_2026-03-19_10-30-00.tar.gz ✓ ├── backup_2026-03-19_09-30-00.tar.gz ✓ ├── backup_2026-03-19_08-30-00.tar.gz ✓ ├── backup_2026-03-19_07-30-00.tar.gz ✗ УДАЛЯЕТСЯ (старая) └── ... более старые ... ✗ УДАЛЯЮТСЯ Max: 5 копий (по умолчанию), настраивается

⚙️ Установка и настройка

1. Установка модуля:

1. Распаковать в /local/modules/mibazarow.backupper/ 2. Администратор → Модули и компоненты 3. Установить "Беккапер на SCP сервер" 4. Модуль автоматически регистрирует агент

2. Конфигурация:

Администратор → Структура сайта → Беккапер на SCP

Параметры подключения:

  • IP адрес сервера — адрес SSH сервера
  • Порт — обычно 22
  • Имя пользователя — логин SSH
  • Пароль — пароль SSH
  • Путь на сервере — например
    /backup/

Параметры резервного копирования:

  • Расписание (минуты) — интервал между бекапами (1440 = 1 день)
  • Макс. количество копий — сколько хранить (5 по умолчанию)

🛡️ Надежность передачи

Retry-логика:

  • 3 попытки при ошибке подключения/передачи
  • 2 секунды задержки между попытками
  • Полное логирование каждой попытки

MD5 верификация:

  • Вычисляется MD5 локального файла
  • Проверяется MD5 на сервере после отправки
  • При несовпадении — повторная попытка

Проверка размера:

  • Размер файла проверяется после отправки
  • Должен совпадать с локальным размером
  • Защита от неполной передачи

Обработка ошибок:

При ошибке: ├── Логируется информация об ошибке ├── Удаляются неполные архивы ├── Переподключение к серверу ├── Автоматический повтор (до 3 раз) └── Уведомление в админку

📊 Исключаемые директории

Не включаются в архив для сэкономления места (60-80%):

  • bitrix/cache/
    — кэш (пересоздается)
  • bitrix/managed_cache/
    — управляемый кэш
  • bitrix/image_resize/
    — кэш изображений
  • bitrix/tmp/
    — временные файлы
  • bitrix/backup/
    — папка с резервными копиями (не нужна в архиве)
  • .git/
    — история версий
  • node_modules/
    — npm зависимости

🔍 Логирование

Все операции логируются в

/bitrix/log/
с ID
mibazarow.backupper
:

[12:30:00] Начинаем создание резервной копии: backup_2026-03-19_12-30-00.tar.gz [12:30:01] Временная директория: /bitrix/backup/backupper_1234567890 [12:31:00] SQL дамп создан: 50 MB [12:31:01] Архивирование файлов сайта... [12:35:00] Архив создан: 165 MB [12:35:02] Отправка файла: backup_2026-03-19_12-30-00.tar.gz (размер: 165 MB, MD5: 7a2b9c...) [12:40:00] Файл успешно отправлен и проверен: backup_2026-03-19_12-30-00.tar.gz [12:40:01] Локальный архив удален [12:40:03] Начинаем очистку старых копий (макс. 5) [12:40:05] Резервная копия успешно создана за 600 сек.

📋 Требования

  • PHP 7.4+
  • Расширение SSH2 для PHP
  • Команда
    tar
    (обычно установлена на Linux)
  • Команда
    mysqldump
    (для SQL дампа)
  • Доступ SSH/SCP к целевому серверу
  • Права на чтение файлов сайта и выполнение команд

📁 Структура модуля

mibazarow.backupper/ ├── admin/ │ ├── menu.php # Меню администратора │ └── mibazarow_backupper.php # Страница опций ├── install/ │ ├── index.php # Установщик модуля │ └── version.php # Версия 1.1.0 ├── lib/ │ ├── scpconnector.php # SSH/SCP подключение с retry │ ├── backupmanager.php # Управление резервными копиями │ └── agent.php # Функция агента Bitrix ├── lang/ru/options.php # Языковые строки ├── options.php # Главная страница настроек └── README.md # Эта документация

🔧 Использование

Программное создание бекапа:

🎯 Полный процесс архивирования

1. Создание временной директории /bitrix/backup/backupper_[timestamp]/ 2. Создание SQL дампа БД → database.sql 3. Архивирование (SQL дамп + файлы сайта) (исключает: bitrix/cache, bitrix/tmp, bitrix/backup, .git, node_modules) 4. Вычисление MD5 архива 5. Отправка на SCP сервер (с retry, 3 попытки) 6. Проверка целостности (размер + MD5) 7. Удаление временной директории /bitrix/backup/backupper_*/ 8. Удаление локального архива из /bitrix/backup/ 9. Очистка старых копий на сервере

📞 Информация о модуле

ПараметрЗначение
Версия1.1.0
АвторМихаил Базаров
Сайтhttps://bazarow.ru/
PHP7.4+
Bitrix17.0+