Настройка бэкапирования серверов через 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







