1С-Битрикс

Бэкап 1С-Битрикс: база и файлы сайта в облако

Штатный бэкап Битрикса удобно запускать из админки, но копия часто остаётся на том же сервере, что и сайт. dbsend добавляет внешнее хранилище в России: дамп базы MySQL/MariaDB и архив файлов сохраняются версиями, а если ночной бэкап не пришёл — вы получаете уведомление.

  • Данные в РФ
  • AES-256-GCM
  • Бесплатный тариф без карты
$ mysqldump --defaults-extra-file=/root/.bitrix.cnf --single-transaction sitemanager > /var/backups/db.sql$ dbsend backup /var/backups/db.sql -d 7e4a… -e mysql_dump✓ Версия v31 сохранена (id 2b9f…, 184 МБ)  https://dbsend.ru/databases/7e4a…/snapshots$ tar --sort=name -cf - -C /home/bitrix/www upload | gzip -n > /var/backups/upload.tar.gz$ dbsend backup /var/backups/upload.tar.gz -d c8d1… -e generic_file= Изменений нет — совпадает с v12 (id 90ae…)

Чего не хватает штатному бэкапу Битрикса

В Битриксе есть встроенное резервное копирование: «Настройки → Инструменты → Резервное копирование» (/bitrix/admin/dump.php). Оно собирает базу и файлы в архив, который потом разворачивается скриптом restore.php. Это хороший инструмент, и отказываться от него не нужно.

Слабое место — где лежит копия. Локальный архив в /bitrix/backup/ живёт на том же диске, что и сайт: при сбое сервера, взломе или ошибочном удалении пропадут оба. Облако «1С-Битрикс» доступно при активной лицензии, а его объём зависит от редакции — полная копия с папкой upload/ быстро упирается в этот лимит.

Второе — контроль. Если задание бэкапа перестало выполняться (кончилось место, истекла лицензия, сломался cron), без внешнего мониторинга это трудно заметить: отсутствие события само по себе уведомления не создаёт. Обычно проблема всплывает в тот день, когда копия понадобилась.

Что даёт dbsend сайту на Битриксе

Копия вне сервера, в России

Дамп базы и архив файлов уходят в S3-совместимое облако на территории РФ с шифрованием AES-256-GCM. На сервере не нужны ключи от бакета — только API-ключ dbsend, который можно ограничить одной базой.

Версии и diff дампа

Каждый дамп — версия vN с SHA-256 и меткой. На тарифах от «Старт» видно, какие таблицы b_* выросли или опустели между версиями, — удобно, чтобы найти копию «до» неудачного импорта каталога.

Файлы как generic_file

Архив upload/ и кода сайта хранится как произвольный файл: версии, метки и проверка SHA-256 при восстановлении. Разбора содержимого и diff по файлам внутри архива нет — только размер и контрольная сумма.

Алерт, если бэкап не пришёл

Задайте для базы ожидаемый интервал: если очередной дамп не пришёл вовремя, придёт уведомление в Telegram или на email (тарифы от «Старт»).

Как это работает

Настройка: дамп базы, архив файлов, cron

Создайте в панели две базы: для дампа — с типом mysql_dump, для архива файлов — generic_file (у каждой своя история версий). Установите CLI (Node.js 22.12+) и выполните dbsend login от имени пользователя, под которым будет работать cron.

  1. Доступ к MySQL из .settings.php

    # Битрикс хранит параметры подключения в /bitrix/.settings.php (connections → default).
    # Соберём из них файл для mysqldump, чтобы пароль не попадал в командную строку.
    php -r '$c = (include "/home/bitrix/www/bitrix/.settings.php")["connections"]["value"]["default"];
    printf("[client]\nhost=%s\nuser=%s\npassword=\"%s\"\n", $c["host"], $c["login"], $c["password"]);' > /root/.bitrix.cnf
    chmod 600 /root/.bitrix.cnf
    
    # имя базы — понадобится в скрипте
    php -r 'echo (include "/home/bitrix/www/bitrix/.settings.php")["connections"]["value"]["default"]["database"], "\n";'

    Если в host указан порт или сокет, перенесите их в строки port= или socket=. В старых версиях те же данные есть в /bitrix/php_interface/dbconn.php ($DBHost, $DBLogin, $DBPassword, $DBName).

  2. Скрипт бэкапа

    #!/usr/bin/env bash
    # /usr/local/bin/bitrix-backup.sh
    set -euo pipefail
    SITE=/home/bitrix/www
    DB=sitemanager          # имя базы из .settings.php
    DB_ID=7e4a…             # база mysql_dump в dbsend
    FILES_ID=c8d1…          # база generic_file в dbsend
    OUT=/var/backups/bitrix
    mkdir -p "$OUT"
    
    # База: согласованный срез InnoDB без остановки сайта
    mysqldump --defaults-extra-file=/root/.bitrix.cnf \
      --single-transaction --quick --routines --triggers \
      --default-character-set=utf8mb4 --no-tablespaces "$DB" > "$OUT/db.sql"
    dbsend backup "$OUT/db.sql" -d "$DB_ID" -e mysql_dump -l "nightly-$(date +%F)"
    
    # Файлы: upload/ без кэша миниатюр. Сортировка и gzip -n делают архив
    # воспроизводимым — неизменившиеся файлы дают «Изменений нет».
    tar --sort=name --exclude='upload/resize_cache' -cf - -C "$SITE" upload \
      | gzip -n > "$OUT/upload.tar.gz"
    dbsend backup "$OUT/upload.tar.gz" -d "$FILES_ID" -e generic_file
    
    rm -f "$OUT/db.sql" "$OUT/upload.tar.gz"

    --defaults-extra-file должен стоять первым параметром mysqldump. Для старых сайтов в кодировке windows-1251 укажите --default-character-set=cp1251 и обязательно проверьте восстановление на тестовой копии.

  3. Код сайта — реже и отдельно

    # раз в неделю: ядро, шаблоны и компоненты без кэшей, локальных бэкапов и upload/
    tar --sort=name -cf - -C /home/bitrix/www \
      --exclude='./upload' --exclude='./bitrix/cache' --exclude='./bitrix/managed_cache' \
      --exclude='./bitrix/stack_cache' --exclude='./bitrix/backup' . \
      | gzip -n > /var/backups/bitrix/site.tar.gz
    dbsend backup /var/backups/bitrix/site.tar.gz -d <id базы для кода> -e generic_file

    Если код сайта хранится в git, этот шаг можно пропустить — но файл /bitrix/.settings.php в репозиторий обычно не попадает, его стоит сохранить отдельно.

  4. Расписание cron

    # crontab -e (root): каждый день в 03:30
    30 3 * * * /usr/local/bin/bitrix-backup.sh >> /var/log/bitrix-backup.log 2>&1

    Из-за set -e скрипт остановится на первой ошибке: код выхода CLI 3 — проблема с ключом, 4 — лимит тарифа, 5 — сеть. Ошибка попадёт в лог, а пропущенную версию заметит алерт dbsend.

  5. Восстановление

    dbsend log 7e4a…
    dbsend restore <id версии> /var/backups/bitrix/db.sql --yes
    mysql --defaults-extra-file=/root/.bitrix.cnf -e 'CREATE DATABASE sitemanager_restore'
    mysql --defaults-extra-file=/root/.bitrix.cnf sitemanager_restore < /var/backups/bitrix/db.sql
    
    dbsend restore <id версии> /var/backups/bitrix/upload.tar.gz --yes
    mkdir -p /home/bitrix/www-restore && tar -xzf /var/backups/bitrix/upload.tar.gz -C /home/bitrix/www-restore

    CLI сверяет SHA-256 скачанного файла. Восстанавливайте в отдельную базу и каталог, проверяйте сайт и только потом переключайте рабочий.

Штатный бэкап или dbsend — что выбрать

Выбирать не обязательно. Штатный бэкап (/bitrix/admin/dump.php) остаётся самым простым способом получить полную копию, которую разворачивает restore.php, — например, для переезда на другой хостинг. dbsend закрывает то, чего ему не хватает в ежедневной эксплуатации: хранение вне сервера в РФ, историю версий с метками и закреплением, сравнение дампов и алерт, если копия не пришла.

Архив штатного бэкапа тоже можно отправлять в dbsend как generic_file. Но для ежедневных копий удобнее отдельный дамп базы: он меньше, загружается быстрее, а diff показывает изменения по таблицам.

Размер файлов и тариф

Размер одного файла ограничен тарифом: «Бесплатный» — 100 МБ, «Старт» — 500 МБ, «Про» — 2 ГБ, «Команда» — 2 ГБ. Дамп базы обычно укладывается в эти рамки, а папка upload/ у магазина с большим каталогом может весить десятки гигабайт. Такой каталог разбейте на несколько архивов по подпапкам (например, upload/iblock отдельно) — каждый в свою базу dbsend.

Для пары «дамп + файлы» нужны две базы dbsend. На бесплатном тарифе доступна одна — хватит, чтобы попробовать бэкап дампа; на «Старт» (199 ₽ в месяц) — 5.

Штатный бэкап Битрикса и dbsend

  • Полная копия сайта для restore.php

    Бэкап из /bitrix/admin/dump.php
    dbsend
    дамп и архивы по отдельности
  • Запуск из админки без SSH

    Бэкап из /bitrix/admin/dump.php
    dbsend
  • Хранение вне сервера

    Бэкап из /bitrix/admin/dump.php
    облако «1С-Битрикс» (с лицензией) или своё хранилище
    dbsend
    S3 в РФ, AES-256-GCM
  • История версий с метками и закреплением

    Бэкап из /bitrix/admin/dump.php
    набор архивов
    dbsend
    v1…vN, метки, закрепление
  • Таблицы и diff между дампами

    Бэкап из /bitrix/admin/dump.php
    dbsend
    от «Старт»
  • Алерт, если бэкап не пришёл

    Бэкап из /bitrix/admin/dump.php
    dbsend
    Telegram и email, от «Старт»
  • Доступ из Claude Code и Cursor (MCP)

    Бэкап из /bitrix/admin/dump.php
    dbsend

Тарифы и лимиты — на странице «Тарифы». Документация: CLI, форматы файлов, тарифы и лимиты.

Частые вопросы

Нужно ли отключать штатный бэкап Битрикса?

Нет. dbsend работает независимо: делает свой дамп через mysqldump и не трогает настройки /bitrix/admin/dump.php. Штатный бэкап удобно оставить для редких полных копий и переездов, а dbsend использовать для ежедневных версий вне сервера.

Где взять логин и пароль от базы Битрикса?

В файле /bitrix/.settings.php, раздел connections → default: host, database, login, password. В старых версиях те же данные есть в /bitrix/php_interface/dbconn.php. Не передавайте пароль в командной строке — сохраните его в файл с правами 600 и укажите mysqldump --defaults-extra-file.

Блокирует ли mysqldump сайт во время бэкапа?

Для таблиц InnoDB — нет: с --single-transaction дамп читает согласованный срез в одной транзакции, а сайт продолжает работать. Таблицы MyISAM этот флаг от изменений во время дампа не защищает, поэтому старые MyISAM-таблицы стоит перевести на InnoDB.

Покажет ли dbsend, что изменилось в архиве файлов?

Нет. Архив хранится как generic_file: dbsend ведёт версии и метки, проверяет размер и SHA-256, но не заглядывает внутрь tar.gz. Список таблиц, число строк и diff доступны только для дампа базы.

Какой максимальный размер файла?

«Бесплатный» — 100 МБ, «Старт» — 500 МБ, «Про» — 2 ГБ, «Команда» — 2 ГБ. Файлы больше 32 МБ CLI загружает частями автоматически.

Подойдёт ли это для Битрикса на виртуальном хостинге?

Если есть SSH, cron и Node.js 22.12+ — да. Если Node.js поставить нельзя, снимайте дамп на хостинге, копируйте его на другой сервер (например, через rsync) и запускайте dbsend там. CLI нужен только исходящий HTTPS до api.dbsend.ru.

Статьи по теме

Все статьи →

Другие сценарии

Вынесите бэкапы Битрикса за пределы сервера

Бесплатный тариф: 1 база, 500 МБ и 3 версии — хватит, чтобы настроить дамп базы. Для базы и файлов вместе — «Старт» за 199 ₽ в месяц.