Налаштування бекапування серверів через 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







