Преимущества 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