Перейти до вмісту

Borg Backup – детальне керівництво

Переваги Borg

  • Простота установки
  • Дедуплікація – збереження тільки змінених файлів замість зберігання ще однієї копії бекапа
  • Інкриментне копіювання та підтримка алгоритму стиснення Zstandard
  • Простота відновлення даних.
  • Гнучке очищення від старих бекапів

Встановлення сервера Borg

Borg присутній практично у всіх репозиторіях більшості актуальних Linux дистрибутивів. Усе що необхідно зробити – встановити пакет borgbackup.

В якості сервера Borg ви можете використати скористатися нашою послугою Data Storage і отримати дисковий простір від 100GB до 10TB для ваших файлів і резервних копій. У випадку використання Data Storage або будь-якого іншого сервісу, який підтримує borg, ви можете пропустити налаштування сервера і перейти до налаштування клієнта.

sudo apt install borgbackup

Після встановлення Borg Backup нам необхідно створити нового користувача, під цим користувачем і відбуватиметься підключення до сервера для завантаження бекапів. Щоб не було плутанини, я створю нового користувача з ім’ям borg, ви ж можете використовувати будь-яке ім’я для нового користувача.

sudo useradd -m borg

Таким чином буде створений користувач borg і його домашня директорія буде знаходитися в папці /home/

Якщо ж ви хочете, щоб домашня директорія користувача розташовувалася в іншому місці, то необхідно виконати таку команду

sudo useradd -m -d /opt/username username

Для підвищення безпеки ми використовуватимемо авторизацію за ssh ключем і для цього створимо необхідну директорію та файл у домашній директорії користувача.

Увійдемо під створеним користувачем

sudo -i -u borg

Створимо директорію .ssh і в ній файл authorized_keys. Після налаштування клієнта ми додамо в файл authorized_keys ssh ключ, який ми згенеруємо на стороні клієнта.

mkdir .ssh
touch .ssh/authorized_keys

На цьому налаштування сервера завершено і можна переходити до налаштування клієнта.

Налаштування клієнта Borg

Налаштування клієнта практично нічим не відрізняється від налаштування сервера. Нам так само як і на сервері необхідно встановити пакет borg.

sudo apt install borgbackup

Для підключення до сервера borg ми будемо використовувати ssh ключ. Ми знімали окреме відео про те, як згенерувати ssh ключ і як під’єднатися до сервера, використовуючи ssh ключ.

У цьому прикладі ми генеруватимемо ssh-ключ для root-користувача, оскільки саме від нього ми вивантажуватимемо файли на сервер borg.

Якщо ви раніше вже створювали ssh ключ для користувача, то варто використовувати цей ключ і пропустити створення нового ключа.

Виконуємо команду

ssh-keygen

Після завершення команди буде створено два файли /root/.ssh/id_rsa і /root/.ssh/id_rsa.pub – файл закритого ключа id_rsa і файл публічного ключа id_rsa.pub.

Переглянемо вміст публічного ключа і скопіюємо його

cat /root/.ssh/id_rsa.pub

Копіюємо ключ і підключаємося до сервера borg, який ми налаштували.

Увійдемо під користувачем borg.

sudo -i -u borg

Відкриємо в редакторі файл authorized_keys, який ми створювали раніше, і вставимо в нього нам публічний ключ.

Якщо ж ви використовуєте послугу Data Storage, то ключ вам необхідно буде скопіювати у відповідне поле в панелі управління.

На цьому підготовка серверної та клієнтської частини завершена, і ми можемо приступити до створення репозиторію.

Для створення нового репозиторію, місця, де зберігатимуться файли, які ми вивантажуватимемо на сервер, необхідно виконати таку команду

borg init -e none [email protected]:bkp

-e none – вказує на те, що ми не використовуємо шифрування
[email protected] – необхідно замінити на ім’я користувача, яке ви створили, та IP вашого сервера
bkp – назва вашого репозиторію

Після виконання команди на стороні сервера буде створено директорію з ім’ям bkp і в ній будуть розміщені необхідні файли для коректної роботи borg backup.

Приклад створення резервної копії Borg Backup

Для створення резервної копії Borg необхідно виконати таку команду:

borg create --list -C zstd [email protected]:bkp::devsrv-`date +%Y%m%d_%H%M%S` /home/git

Розберемо докладніше команду, яку вказано вище.

create – повідомляє borg що необхідно зробити резервну копію
–list – необов’язковий параметр, виводить статус виконання команди
-C zstd – вказує алгоритм компресії
[email protected] – ім’я користувача та ip адреса borg сервера
bkp – назва репозиторію в який проводиться резервне копіювання
devsrv-`date +%Y%m%d_%H%M%S` – додасть до імені архіву поточну дату і час та довільну назву, у нашому прикладі це devsrv
/home/git – директорія для якої буде виконано резервне копіювання

Після виконання команди на сервері буде створено резервну копію поточної директорії.

Робота з Borg Backup

Інформація про репозиторій

Для отримання інформації про репозиторій нам необхідно виконати команду borg info і вказати сервер і репорзиторій, інформацію про який нам необхідно отримати.

borg info [email protected]:bkp

У відповідь ми отримаємо займаний розмір репозиторію.

Отримання списку резервних копій

Для відображення всіх доступних резервних копій необхідно виконати borg list

borg list [email protected]:bkp

У відповідь на цю команду ви отримаєте список усіх резервних копій.

Для отримання інформації щодо конкретного архіву необхідно вказати назву архіву, інформацію про який ви хочете отримати.

borg list [email protected]:bkp::file_name

У відповідь ви отримаєте список усіх файлів, які знаходяться в архіві

Статистика за конкретним архівом Borg

Для отримання докладної статистики щодо архіву, який вас цікавить, необхідно виконати borg info із зазначенням імені архіву

borg info [email protected]:bkp::devsrv-20230118_104604

У цьому выводі ви отримаєте детальну статистику про цей архів.

Перевірка репозиторію/архіву в Borg

У Borg реалізовано систему перевірки репозиторію або окремих архівів на цілісність. Для перевірки репозиторію необхідно виконати команду borg check -v і вказати сервер та ім’я репозиторію.

borg check -v [email protected]:bkp

Для перевірки окремо обраного архіву додатково вказуємо ім’я архіву, яке ви хочете перевірити.

borg check -v [email protected]:bkp::devsrv-20230118_104604

Очищення старих резервних копій у Borg Backup

Для оптимізації дискового простору на сервері borg передбачено автоматичне очищення старих резервних копій. Для видалення непотрібних резервних копій необхідно виконати команду borg prune і вказати правило зберігання резервних копій. У borg prune можна використовувати такі ключі:

  • –keep-within INTERVAL – зберігати всі архіви за вказаний проміжок часу
  • –keep-last, –keep-secondly – зберігати вказану кількість останніх копій
  • –keep-minutely – кількість копій протягом останньої години
  • -H, –keep-hourly – кількість останніх годинникових копій
  • -d, –keep-daily – кількість останніх денних копій
  • -w, –keep-weekly – кількість останніх тижневих копій
  • -m, –keep-monthly – кількість останніх місячних копій
  • -y, –keep-yearly – кількість останніх річних копій

Якщо в зазначений період потрапляє кілька резервних копій, то буде збережена тільки найостанніша.

Для оцінки результату видалення використовується ключ –dry-run за його використання видалення відбуватися не буде, ви зможете оцінити результат виконання команди і якщо він вас влаштує запустити команду без цього ключа.

borg prune --list --keep-last 2 --dry-run [email protected]:bkp

Як можна бачити на скріншоті вище, залишаться тільки дві копії, а решту буде видалено. І тепер для того щоб видалити зайві резервні копії повторно виконайте команду, але вже без –dry-run.

Увага! У разі якщо ви робите резервне копіювання в один репозиторій різних директорій, наприклад, з різним ім’ям архіву, то під час очищення старих резервних копій borg не враховує ім’я архіву, в такому випадки у вас залишаться тільки останні копії, в незалежності від префікса імені архіву.

Монтування резервної копії Borg

Якщо вам необхідно відновити файли з резервної копії, вам немає необхідності вивантажувати повний архів, розпаковувати його і тільки потім проводити відновлення. Досить буде змонтувати актуальну резервну копію на сервер і відновити необхідні дані. Ви також можете змонтувати весь репозиторій і скопіювати з нього необхідну резервну копію.

Для монтування сховища виконуємо команду borg mount вказавши сховище, яке ми хочемо змонтувати, і точку монтування.

borg mount [email protected]:bkp /mnt/bkp

Приклад монтування певного архіву

borg mount [email protected]:bkp::devsrv-20230118_173855 /mnt/devsrv

Для того щоб розмонтувати примонтований репозиторій або архів, необхідно виконати команду borg umount і вказати точку монтування

borg umount /mnt/bkp

Автоматизація створення резервних копій з Borg Backup

Для автоматизації створення резервних копій Borg ми використовуватимемо crontab, але перед тим, як ми створимо правило, нам потрібно буде створити простий скрипт, який запускатиметься в потрібний нам час і виконуватиме, приміром, не тільки створення резервної копії, а й видалення старих резервних копій.

Докладне відео про роботу з crontab ви можете подивитися у нас на YouTube каналі.

Створимо файл borgbkp.sh у домашній директорії та внесемо в нього команду створення резервної копії, яку ми розглянули вище, і додамо команду, що видалятиме старі бекапи та зберігатиме останні 5 копій.

#!/bin/sh

borg create --list -C zstd [email protected]:bkp::devsrv-`date +%Y%m%d_%H%M%S` /home/git
borg prune --list --keep-last 5 [email protected]:bkp

Зберігаємо файл, і встановлюємо права для цього файлу на виконання.

chmod +x /home/borgbkp.sh

Відкриємо файл /etc/crontab і додамо в нього строку, яка виконуватиме наш скрипт. Сформувати необхідний інтервал виконання скрипта ви можете за допомогою онлайн сервісу crontab.guru. У прикладі нижче наш скрипт буде виконуватися щодня о 3 годині ночі.

0 3 * * * root /home/borgbkp.sh

Позначки: