Налаштування бекапування серверів через 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
    1368
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    815
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1140