Про користь borg-ів
До недавнього часу для створення резервних копій я активно користувався tartarus-ом. Хоча цей інструмент може створювати інкрементні бекапи і тим самим оптимізувати збереження резервних копій на диску, розміри повних бекапів мене не влаштовували. Крім того, розпаковка повного архіву було ще тим задоволенням :) На допомогу прийшла програма borgbackup (або просто borg). В роботі вона нагадує git. А головним для мене стала дедуплікація даних. Розміри повних бекапів в кілька разів менше за аналогічні від tartarus-а.
Вихідні дані: сервери PROD (клієнт, на якому зберігаються дані, prod.example.com) та BACKUP (сервер, на якому зберігаються резервні копії, backup.example.com)
Підготовка до роботи
На обох серверах треба встановити borg. Для багатьох дистрибутивів встановлюється штатними засобами системи, інакше можна взяти готовий бінарник (подробиці тут)
Для Debian:
apt install borgbackup fuse
Слід пам’ятати, що сервер і клієнт повинні мати однакові версії borg. Використання різних версій може призвести до помилок та непрацюючої резервної копії.
На сервері PROD генеруємо ключ для користувача myuser
ssh-keygen
Потім вміст .ssh/idrsa.pub з PROD треба перенести до .ssh/authorizedkeys на BACKUP. В подальшому це дозволить автоматизувати процес створення резервної копії.
Створення резервної копії
Робота з borg подібна до роботи з git. Спочатку треба створити сховище (для прикладу сховище FirstRepository в домашній папці користувача myuser на сервері backup.example.com):
borg init -e none ssh://myuser@backup.example.com/~/FirstRepository
-e none показує що ми не використувуємо шифрування.
Тепер створюємо резервну копію директорії /var/www/mysite, за виключенням папки /var/www/mysite/cache:
borg create -v --stats FirstRepository::'{now:%Y-%m-%d_%H:%M}' /var/www/mysite --exclude /var/www/mysite/cache
Результатом буде:
------------------------------------------------------------------------------
Archive name: 2019-09-12_10:26
Archive fingerprint: fd84bfec85dc2aee7469112d8d0beeff06ac911a73ded047515e7b323fb04524
Time (start): Thu, 2019-09-12 10:26:04
Time (end): Thu, 2019-09-12 10:30:06
Duration: 4 minutes 2.56 seconds
Number of files: 111003
------------------------------------------------------------------------------
Original size Compressed size Deduplicated size
This archive: 6.74 GB 6.74 GB 4.94 GB
All archives: 6.74 GB 6.74 GB 4.94 GB
Unique chunks Total chunks
Chunk index: 96581 111141
------------------------------------------------------------------------------
Як видно, за рахунок дедуплікації вдалось зекономити майже 2G. Перший бекап створюється довго, наступні швидше.
Щоб переглянути список бекапів:
borg list ssh://myuser@backup.example.com/~/FirstRepository
2019-09-12_10:26 Thu, 2019-09-12 10:26:04
2019-09-12_11:44 Thu, 2019-09-12 11:44:01
Щоб переглянути вміст конкретного бекапу:
borg list FirstRepository::2019-09-12_10:26
Відновлення з резервної копії
Щоб відновити інформаціє з резервної копії, треба змонтувати віддалене сховище на локальну машину (в нашому випадку на PROD):
mkdir -p backup-restore
borg mount ssh://myuser@backup.example.com/~/FirstRepository::2019-09-12_10:26 backup-restore/
Після закінчення роботи відмонтуємо сховище
borg umount backup-restore