Get Rewarded! We will reward you with up to €50 credit on your account for every tutorial that you write and we publish!

Установка и настройка BorgBackup

profile picture
Author
Hetzner Online
Published
2019-03-08
Time to read
8 minutes reading time

Введение

BorgBackup (кратко: Borg) это дедуплицирующая программа для резервного копирования. Опционально доступно сжатие и шифрование данных.

Основная задача Borg — предоставление эффективного и безопасного решения для резервного копирования. Благодаря дедупликации резервное копирование происходит очень быстро, что делает Borg удобным для ежедневного резервного копирования. Вы можете заметить, что Borg значительно быстрее, чем некоторые другие методы, в зависимости от объема данных и количества изменений, необходимых для резервного копирования. Все данные уже зашифрованы на стороне клиента, что делает Borg интересным для использования на арендованных хранилищах.

Более подробную информацию о BorgBackup можно найти на официальном сайте.

Шаг 1 - Установка

Borg можно установить тремя способами:

  • пакет в дистрибутиве
  • автономный исполняемый файл
  • исходный код

Подробное описание всех способов доступно в Документации Borg. Поэтому мы не будем подробно останавливаться на процессе установки.

По соображениям совместимости используйте текущую версию Borg! (> = 1.0.9)

Шаг 2 - Работа с Borg

Шаг 2.1 - Включение поддержки Borg и настройка Storage Box

Для работы Borg со Storage Box потребуется включить сервис в панели Robot. Для этого перейдите на страницу настроек вашего Storage Box в панели Robot и кликните «activate» напротив «SSH support».

Так как SSH недоступен для Storage Box, на этом шаге следует использовать SFTP.

Для доступа к репозиторию Borg можно использовать аутентификацию по паролю, но рекомендуется использовать аутентификацию по публичному ключу. Это особенно удобно в том случае, если планируется автоматизировать резервное копирование, например, через cron.

По сравнению с SFTP/SCP, для использования Borg не требуется SSH-ключ в формате RFC4716. Можно использовать обычный публичный ключ. Если планируется использовать и Borg и SFTP/SCP, то следует добавить оба ключа (обычный публичный ключ и публичный ключ в формате RFC4716).

В Storage Box создайте директорию .ssh, и в ней создайте файл authorized_keys. Он должен содержать ваш публичный ключ:

ssh-rsa AAAAB3NzaC1yc2EAAAA.......rdj7eitNUjlIV8ovvAH/6SAsKD6

Задайте права доступа 0700 для директории .ssh и 0600 для authorized_keys.

Для того, чтобы заработала аутентификация по ключу также требуется, чтобы домашняя директория на Storage Box/Backup space не имела разрешения на запись для Группы и Остальных. По умолчанию это разрешения есть, но вы можете это поменять.

Теперь создайте директорию для репозитория резервных копий. Например, создайте директорию backups и в ней, директорию server1. На следующем шаге Borg создаст здесь репозиторий. В директории backups можно создавать дополнительные директории для резервных копий с других серверов.

/backups/server1

Шаг 2.2 - Инициализация репозитория Borg

Если используется SSH-ключ и это не ключ по умолчанию, то потребуется дополнительно задать использование конкретного ключа при помощи переменной окружения BORG_RSH. В ней можно задать команду SSH, которая будет использовать при работе Borg. По умолчанию это просто ssh.

$ export BORG_RSH='ssh -i /home/userXY/.ssh/id_ed25519'

При инициализации Borg будет запрошен пароль для репозитория. Доступ к репозиторию будет возможен только с этим паролем. Этот пароль будет требоваться как при операциях чтения, так и при операциях записи в репозиторий. Вы должны запомнить пароль, так как его невозможно восстановить! Для того чтобы не вводить пароль при каждом запуске Borg, можно задать переменную окружения BORG_PASSPHRASE.

$ export BORG_PASSPHRASE="top_secret_passphrase"

Для начала надо инициализировать репозиторий Borg. Репозиторий это не что иное, как директория, расположенная на Storage Box, с некоторыми базовыми структурами. Все резервные копии хранятся в этой директории.

Следующая команда инициализирует репозиторий в директории /backups/server1 на вашем Storage Box.

$ borg init --encryption=repokey ssh://u123456@u123456.your-storagebox.de:23/./backups/server1

Шаг 2.3 - Создание первой резервной копии

Следующая команда сделает резервную копию директорий src и build. Каждая резервная копия должна иметь уникальное имя. Для этого удобно использовать время создания резервной копии.

$ borg create ssh://u123456@u123456.your-storagebox.de:23/./backups/server1::2017_11_11_initial ~/src ~/built

borg create имеет много других опций. Например, можно дополнительно выводить индикацию процесса резервного копирования или статистику по завершению процесса. Также можно задать шаблоны для исключения и много другое.

Подробная информация доступна на странице Borg create documentation.

Шаг 2.4 - Последующее (инкрементальное) резервное копирование

Последующие резервные копии создаются точно так же, как и первая. Благодаря дедупликации они создаются гораздо быстрее и требуют меньше места для хранения.

Надо лишь менять имя каждой последующей резервной копии. Помните, вы должны использовать уникальные имена, как упоминалось выше.

Добавим опцию --stats чтобы увидеть насколько эффективно инкрементальное резервное копирование.

$ borg create --stats ssh://u123456@u123456.your-storagebox.de:23/./backups/server1::2017_11_12 ~/src ~/built

Шаг 2.5 - Дополнительные команды, включая просмотр архивов, восстановление с резервных копий

В документации Borg доступно подробное описание всех поддерживаемых команд.

Начать изучение документации можно с раздела quickstart и, затем, ознакомиться с дополнительными возможностями в разделе usage.

В документации содержится много примеров команд для отображения списка архивов или восстановления данных. Также есть возможности, например, по просмотру разницы между резервными копиями и удаления старых копий для освобождения места.

Шаг 2.6 - Автоматизация резервного копирования с помощью cron

Создайте директорию для файлов журнала.

$ mkdir -p /var/log/borg

Создайте скрипт, который будет выполнять резервное копирование. Он может выглядеть как приведённый ниже скрипт и располагаться в /usr/local/bin/backup.sh.

#!/usr/bin/env bash

##
## Задание переменных окружения для Borg
##

## если используется нестандартный SSH-ключ,
## то его надо явно указать:
# export BORG_RSH='ssh -i /home/userXY/.ssh/id_ed25519'

## пароль репозитория Borg можно указать в переменной
## окружения, чтобы не вводить его при каждом запуске
# export BORG_PASSPHRASE='top_secret_passphrase'

##
## Задание переменных окружения
##

LOG='/var/log/borg/backup.log'
export BACKUP_USER='u602'
export REPOSITORY_DIR='server1'

## Совет: при использовании Backup Space следует использовать домен
## 'your-storagebox.de" вместо "your-backup.de'

export REPOSITORY="ssh://${BACKUP_USER}@${BACKUP_USER}.your-storagebox.de:23/./backups/${REPOSITORY_DIR}"

##
## Вывод в файл журнала
##

exec > >(tee -i ${LOG})
exec 2>&1

echo "###### Backup started: $(date) ######"

##
## Здесь можно выполнить дополнительные действия
## перед созданием резервной копии, например:
##
## - сделать список установленного программного обеспечения
## - сделать дамп базы данных
##

##
## Передача файлов в репозиторий.
## В данном примере будут скопированы директории
## root, etc, var/www и home.
## Также есть список исключений, который не должен входить
## в резервную копию.
##

echo "Transfer files ..."
borg create -v --stats                   \
    $REPOSITORY::'{now:%Y-%m-%d_%H:%M}'  \
    /root                                \
    /etc                                 \
    /var/www                             \
    /home                                \
    --exclude /dev                       \
    --exclude /proc                      \
    --exclude /sys                       \
    --exclude /var/run                   \
    --exclude /run                       \
    --exclude /lost+found                \
    --exclude /mnt                       \
    --exclude /var/lib/lxcfs

echo "###### Backup ended: $(date) ######"

Теперь надо протестировать скрипт, запустив его в консоли.

$ chmod u+x /usr/local/bin/backup.sh
$ /usr/local/bin/backup.sh

Если всё работает хорошо, то можно добавить скрипт в cron. Откройте crontab от пользователя root:

crontab -e

Добавьте следующую строку для ежедневного резервного копирования в 00:00.

0 0 * * * /usr/local/bin/backup.sh > /dev/null 2>&1

Шаг 3 - Советы

Шаг 3.1 - Полная копия системы

Если вы хотите делать резервную копию всей системы вашего сервера на Linux, то следует помнить, что не все файлы и директории должны копироваться. По умолчанию некоторые директории должны быть исключены.

Для этого команда создания резервной копии имеет опцию --exclude. Подробная информация по использованию данной опции доступна в документации Borg create.

Вот пример вызова borg create для создания копии всей системы:

borg create -v --stats                   \
    $REPOSITORY::'{now:%Y-%m-%d_%H:%M}'  \
    /                                    \
    --exclude /dev                       \
    --exclude /proc                      \
    --exclude /sys                       \
    --exclude /var/run                   \
    --exclude /run                       \
    --exclude /lost+found                \
    --exclude /mnt                       \
    --exclude /var/lib/lxcfs

Шаг 3.2 - Дедупликация и надёжность

Так как BorgBackup использует дедупликацию, резервные копии могут создаваться быстро и без использования большого объёма для хранения.

Однако же следует помнить, что каждый файл хранится только один раз. В случае повреждения файла, например, при сбое диска, он будет повреждён во всех последующих резервных копиях.

По этой причине важные данные следует хранить более чем в одном репозитории!

Шаг 3.3 - Версия Borg на сервере

Для того, чтобы избежать проблем с совместимостью рекомендуется использовать на сервере ту же версию Borg, что и на вашем Storage Box / Backup Space.

Доступны версии для каждого важного обновления. Мы регулярно обновляем доступные версии. Задать желаемую версию можно при помощи параметра --remote-path. Если он не задан, то будет использована последняя версия, доступная на Storage Box / Backup Space.

В настоящий момент доступны версии 1.0 и 1.1. По умолчанию используется версия 1.1. При необходимости, можно использовать версию 1.0:

$ borg init --encryption = repokey --remote-path = borg-1.0
ssh: //u123456@u123456.your-storagebox.de: 23 /./ backups / server1

borg-1.0 означает версию 1.0.x.

Список изменений, доступный в документации BorgBackup, содержит информацию о возможных проблемах совместимости, если таковые имеются.

Шаг 3.4 - Borg и SSH

BorgBackup использует SSH на порту 23. SSH доступ ограничен утилитой Borg, и не позволяет интерактивный вход!

Шаг 3.5 - Одновременное использование ключей для Borg и SFTP/SCP

Как описано выше, Borg требует обычный публичный ключ, а SFTP/SCP требует публичный ключ в формате RFC4716. Для одновременного использования Borg и SFTP/SCP в файле authorized_keys следует сохранить два ключа (обычный публичный ключ и публичный ключ в формате RFC4717).

Шаг 3.6 - Ключ репозитория и его пароль Borg

Мы не храним пароли репозиториев Borg, и, соответственно, не можем их восстановить. Не теряйте свои пароли!

В режиме repokey (используется по умолчанию), ключ репозитория хранится в файле настроек репозитория на Storage Box/Backup Space. Мы рекомендуем иметь резервную копию ключа репозитория. Подробная информация доступна в документации Borg.

Заключение

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

Want to contribute?

Get Rewarded: Get up to €50 in credit! Be a part of the community and contribute. Do it for the money. Do it for the bragging rights. And do it to teach others!

Report Issue

Discover our

Storage Box

Access your storage from everywhere and at any time via PC, smartphone, and tablet.

Want to contribute?

Get Rewarded: Get up to €50 credit on your account for every tutorial you write and we publish!

Find out more