Hetzner - DokuWiki

BorgBackup/ru

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

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

Подробная информация о BorgBackup доступна на странице https://www.borgbackup.org/

Inhaltsverzeichnis

Установка

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

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

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

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

Работа с Borg

0. Включение поддержки Borg и настройка Storage Box

Для работы Borg со Storage Box потребуется включить сервис в панели Robot. Для этого перейдите на страницу настроек вашего Storage Box в панели Robot и кликните «activate» напротив «Borg support». Обратите внимание, что в настоящее время Borg не доступен для дополнительных пользователей (sub-account).

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

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

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

В 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

1. Инициализация репозитория 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. Создание первой резервной копии

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

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

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

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

3. Последующее (инкрементальное) резервное копирование

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

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

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

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

4. Дополнительные команды

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

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

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

Автоматизация резервного копирования в 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"
BACKUP_USER="u602"
REPOSITORY_DIR="server1"

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

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

Советы

Полная копия системы

Если вы хотите делать резервную копию всей системы вашего сервера на 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

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

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

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

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

Версия 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, содержит информацию о возможных проблемах совместимости, если таковые имеются.

Borg и SSH

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

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

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

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

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

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



© 2018. Hetzner Online GmbH. Alle Rechte vorbehalten.