Table of Contents
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