Переваги 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