User Tools

Site Tools


borgbackup

BorgBackup

Данный проект имеет прекрасную документацию на офсайте

Установка

Как на бекап сервере, так и на внешних хостах устанавливаем BorgBackup.

Из пакетов

Для Debian/Ubuntu

apt install borgbackup

Для Fedora/RHEL

dnf install borgbackup

Настройка

Перед созданием резервных копий следует убедиться, что имеется достаточно дискового пространства на всех хостах. Для работы Borg требуется несколько гигабайт свободного места на основном сервере.

df -h

Так же, на сервере бекапов создаём пользователя borg: co стандартным shell’ом, и обязательно с домашним каталогом

useradd -m borg

# Либо сразу укажем директорию для бекапов при создании пользователя
adduser --home /path/borg_backup --disabled-password borg

На бекап машине создадим директорию, которую Borg будет использовать в качестве хранилища резервных копий. Borg хранит резервные копии в репозитории как набор архивов.

mkdir /path/borg_backup
chown -R borg. /path/borg_backup

Настраиваем SSH key-based authentication для возможности подключатся с удаленных хостов к серверу бекапа без пароля.

Инициализируем borg repo на сервере с клиента:

borg init -e none borg@10.10.10.14:MyBorgRepo
  • -e – служит для выбора метода шифрования репозитория (да, можно дополнительно зашифровать каждый репозиторий своим паролем!). В данном случае, т.к. это пример, шифрование не используем.
  • MyBorgRepo – это имя каталога, в котором будет borg repo (создавать его заранее не нужно — Borg всё сделает сам).

Запускаем первый бэкап с помощью Borg:

borg create --stats --list borg@10.10.10.15:MyBorgRepo::"MyFirstBackup-{now:%Y-%m-%d_%H:%M:%S}" /etc /root

Про ключи:

  • –stats и –list – дают статистику по бекапу и попавшим в него файлам;
  • borg@10.10.10.15:MyBorgRepo – тут всё понятно, это наш сервер и каталог;
  • ::“MyFirstBackup-{now:%Y-%m-%d_%H:%M:%S}” — это имя архива внутри репозитория. Оно произвольно, в данном примере – Имя_бэкапа-timestamp (timestamp в формате Python).

Далее, посмотрим что же попало в наш бэкап! Список архивов внутри репозитория:

borg list MyBorgRepo/
MyFirstBackup-2021-06-04_13:51:52    Fri, 2021-06-04 13:51:52

Смотрим список файлов:

borg list MyBorgRepo::MyFirstBackup-2021-06-04_14:28:19
# либо конкретные файлвы
borg list MyBorgRepo::MyFirstBackup-2021-06-04_14:28:19 | grep wireguard

Извлекаем данные из бэкапа:

borg extract MyBorgRepo::MyFirstBackup-2021-06-04_14:28:19 etc/wireguard
ll etc/

Настройка автоматического резервного копирования

Cоздадим простенький скрипт, для резервирования директории /etc и /home:

borg-backup.sh
#!/bin/bash
# Backup home directory to a remote location using Borg.
# To restore: borg extract username@offsite_server:/path/to/backup_repo::backup_name
 
export BORG_RSH='ssh'
export BORG_REPO='username@offsite_server:/home/user/backup'
# export BORG_PASSPHRASE='your repository passphrase'
 
# Backup /home excluding cache & downloads
borg create -v --stats ::$(hostname)-$(date +"%d-%b-%Y-%S") /home /etc \
--exclude '/home/*/.cache'                          \
--exclude '/home/*/.ccache'                         \
--exclude '/home/$USER/Downloads'                   \
 
# Prune extra backups
borg prune --prefix $(hostname)- --keep-daily=7 --keep-weekly=4 --keep-monthly=12
 
exit 0

Протестируем скрипт:

./borg-backup.sh

Если все ок, то перемещаем сценарий в /etc/cron.daily для автоматического выполнения каждый день

mv borg-backup.sh /etc/cron.daily

misc

Также, существует графический интерфейс для Desktop систем – vorta.
Установка:

sudo apt install vorta
borgbackup.txt · Last modified: 2023/04/06 10:28 (external edit)