Настройка бэкапирования серверов через BorgBackup / Borgmatic

Каждый день ручной проверки бэкапов на множестве серверов отнимает время и нервы, а однажды повреждённый архив может обернуться часами простоя. Мы настраиваем резервное копирование через BorgBackup и Borgmatic под ключ: с дедупликацией, шифрованием и автоматическим мониторингом. Наша команда берёт на себя весь цикл — от аудита до сопровождения, чтобы вы спали спокойно.
Часто задаваемые вопросы

Настройка бэкапирования серверов через BorgBackup / Borgmatic

Вы отвечаете за 20–50 серверов и каждый день тратите часы на ручную проверку бэкапов. Однажды архив оказывается повреждён, и восстановление занимает сутки вместо часа. Знакомая ситуация? BorgBackup с Borgmatic решает проблему декларативно: дедупликация, шифрование и автоматическая верификация. Мы внедряем эту связку под ключ, чтобы вы спали спокойно.

Почему Borg экономит до 60% места?

rsync копирует файлы целиком при изменении атрибутов или содержимого. Borg использует content-defined chunking: режет файлы на чанки по алгоритму CDC и хранит уникальные чанки один раз. Типичный ежедневный инкремент — 1–3% от полного объёма. Для каталогов с логами или базами данных это радикальная экономия места. Наши клиенты экономят до 60% затрат на хранение по сравнению с классическими решениями.

Как настроить Borgmatic за 1 день

Установка и инициализация репозитория — первый этап. Наш инженер создаёт SSH-ключи с ограничениями, настраивает borg serve и инициализирует шифрованный репозиторий.

# На бэкап-сервере (куда пишем)
apt-get install borgbackup

# На клиенте
apt-get install borgbackup borgmatic

# Создаём SSH-ключ для бэкапа
ssh-keygen -t ed25519 -C "backup@client-server" -f /root/.ssh/borg_backup -N ""

# На бэкап-сервере добавляем ключ в authorized_keys с ограничениями
echo 'command="borg serve --restrict-to-path /mnt/backups/client1",restrict ssh-ed25519 AAAA...' \
    >> /home/borg/.ssh/authorized_keys

# Инициализация репозитория
borg init --encryption=repokey-blake2 \
    borg@backup-server:/mnt/backups/client1

repokey-blake2 — ключ шифрования хранится в репозитории (защищён паролем). Альтернатива keyfile — ключ на клиенте, нужно бэкапить отдельно.

Конфигурация Borgmatic

# /etc/borgmatic/config.yaml
repositories:
  - path: borg@backup-server:/mnt/backups/client1
    label: remote-backup
source_directories:
  - /etc
  - /home
  - /var/www
  - /var/lib
exclude_patterns:
  - /var/lib/lxcfs
  - /var/lib/docker/overlay2
  - '*.pyc'
  - '*/__pycache__'
  - '*/node_modules'
storage:
  encryption_passphrase: "your-strong-passphrase"
  compression: zstd,3
  archive_name_format: '{hostname}-{now:%Y-%m-%d-%H%M%S}'
retention:
  keep_daily: 7
  keep_weekly: 4
  keep_monthly: 6
  keep_yearly: 1
consistency:
  checks:
    - name: repository
      frequency: 2 weeks
    - name: archives
      frequency: 1 month
    - name: data
      frequency: 3 months
hooks:
  before_backup:
    - /usr/local/bin/pre-backup.sh
  after_backup:
    - curl -fsS -m 10 --retry 5 https://hc-ping.com/YOUR-UUID
  on_error:
    - echo "Backup failed on $(hostname)" | mail -s "Borg backup error" [email protected]

consistency.checks.data — полная проверка данных (расшифровка и верификация хешей). Дорогая операция, запускать не чаще раза в квартал. archives — проверка метаданных архивов, дешевле.

Хук after_backup пингует Healthchecks.io — внешний сервис мониторинга бэкапов. Если пинг не пришёл в ожидаемое окно — алерт. Это проще, чем собственный мониторинг.

Systemd timer

Настроим запуск бэкапа по расписанию. Используем borgmatic --init для автоматического создания systemd unit или вручную через таймер.

# Automatic timer
borgmatic --init
systemctl enable --now borgmatic.timer

# Or manual timer
cat > /etc/systemd/system/borgmatic.timer <<EOF
[Timer]
OnCalendar=*-*-* 01:00:00
Persistent=true

[Install]
WantedBy=timers.target
EOF
systemctl enable --now borgmatic.timer

Pre-backup хук для баз данных

Если PostgreSQL работает на сервере, перед бэкапом делаем дамп:

#!/bin/bash
# /usr/local/bin/pre-backup.sh
set -euo pipefail
sudo -u postgres pg_dumpall --globals-only > /var/backups/pg_globals.sql
sudo -u postgres pg_dump mydb | gzip > /var/backups/mydb.sql.gz

Borg заберёт эти файлы как часть бэкапа /var/backups. Это логический дамп поверх физического — избыточно, но гарантирует восстановление одной таблицы без разворачивания сервера.

Как восстановить данные из бэкапа: пошаговый алгоритм

# Список архивов
borgmatic list

# Восстановить весь последний архив
borgmatic extract --archive latest

# Восстановить конкретный файл в другую директорию
borgmatic extract --archive latest \
    --path /etc/nginx/nginx.conf \
    --destination /tmp/restore

Восстановление может выполняться на другой сервер: достаточно сменить destination и смонтировать репозиторий по SSH. Это ключевая возможность для Disaster Recovery.

Сравнение Borg и rsync

Параметр Borg rsync
Дедупликация На уровне чанков (CDC) Нет, копирует целые файлы
Инкремент 1–3% объёма 10–50% при изменении метаданных
Шифрование Встроенное, AES-256 Обычно через SSH
Скорость полного восстановления 1–5 мин на 10 ГБ 5–20 мин на 10 ГБ

Сравнение схем хранения

Тип копии Срок хранения Частота бэкапов Занимаемое место (на 500 ГБ)
Ежедневная 7 дней 1 раз/день ~15 ГБ
Еженедельная 4 недели 1 раз/неделю ~5 ГБ
Ежемесячная 6 месяцев 1 раз/месяц ~3 ГБ
Полная (годовая) 1 год 1 раз/год ~500 ГБ

Какие типичные ошибки допускают при настройке Borg?

  • Недостаточное количество check-проверок: архив может молча испортиться. Настраивайте data хотя бы раз в квартал.
  • Слабый пароль шифрования: используйте passphrase длиной 20+ символов.
  • Игнорирование хуков: без after_backup вы не узнаете, что бэкап не выполнен.

Рекомендуем добавить в конфиг archive_name_format: '{hostname}-{now:%Y-%m-%d}' для удобства идентификации. И обязательно тестировать восстановление после внедрения — это единственный способ убедиться, что бэкап работает. Если вам нужно решение для нескольких серверов, обратитесь к нам — мы подготовим единый конфиг с централизованным мониторингом.

Что входит в работу

  • Аудит текущей инфраструктуры и выбор хранилища
  • Установка и настройка BorgBackup/Borgmatic на серверах
  • Создание SSH-ключей и ограничений (restrict)
  • Настройка расписания через systemd timer или crontab
  • Интеграция с Healthchecks.io или вашим мониторингом
  • Написание хуков для дампов баз данных
  • Настройка retention и проверок целостности
  • Документация и обучение вашей команды
  • Тест восстановления по чек-листу

Почему выбирают нас

наша команда — 5+ лет опыта в DevOps, более 50 проектов по резервному копированию. Мы гарантируем отсутствие сюрпризов при восстановлении: все настройки документируем, а после внедрения проводим тренировку восстановления.

Срок настройки: 1–2 дня для одного сервера, до 3 дней для кластера. Стоимость рассчитывается индивидуально — экономия на хранении окупает настройку менее чем за 3 месяца.

Хотите надёжный бэкап? Свяжитесь с нами — оценим ваш проект. Или напишите, и мы подготовим конфиг за час.

Подробнее о Borg: BorgBackup documentation

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1369
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    816
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1142