Bareos — это система резервного копирования с открытым исходным кодом, позволяющая создавать, управлять и восстанавливать бэкапы для серверов. В этой статье рассмотрим процесс установки и настройки Bareos для автоматизированного резервного копирования данных как на выделенном, так и на облачном сервере, используя S3-хранилище для хранения бэкапов.
Создание ресурсов
Для начала создадим облачный сервер, на котором будет работать Bareos.
Так как на сервере будут работать несколько ресурсоемких служб, включая базу данных и Bareos Storage Director, оптимальная конфигурация будет следующей:
- vCPU: 2
- RAM: 4 ГБ
- Диск: 50 ГБ SSD
- ОС: Ubuntu 22.04 Jammy
Однако вы можете выбрать другую конфигурацию в зависимости от ваших потребностей, объема данных и частоты резервного копирования.
Если вы настраиваете резервное копирование для выделенного сервера, ему потребуется внешний IP-адрес, так как передача данных будет выполняться через интернет.
Если же Bareos будет использоваться для создания бэкапов облачных серверов, можно добавить сервер в существующую локальную сеть и во всей инструкции использовать его локальный IP-адрес.
Далее создадим S3-бакет. Для наших целей идеально подойдет холодный класс хранилища. Учтите, что даже если используется инкрементное резервное копирование, в хранилище должен помещаться как минимум один полный бэкап всего сервера, а также ежедневные изменения, умноженные на количество дней хранения.
Настройка сервера
Bareos использует PostgreSQL для хранения конфигурации и информации о бэкапах. Чтобы упростить установку, мы воспользуемся Docker Compose. В результате установим саму СУБД и Adminer — веб-интерфейс для работы с базой.
Создание СУБД
Сначала установим Docker и Docker Compose:
Создадим манифест docker-compose.yml:
Укажите вместо <ваш_пароль_администратора_бд> пароль администратора базы данных.
Выполните команду для запуска контейнеров:
После загрузки образов и запуска контейнеров убедитесь, что они работают:
Вы должны увидеть примерно такой вывод:
Установка Bareos
Добавим репозитории Bareos с помощью официального скрипта:
Обновим список пакетов и установим необходимые компоненты:
Во время установки появится запрос на настройку Postfix. Выберите No configuration.

Затем будет предложено настроить подключение к базе данных. Выберите No.

Настройка подключения к базе данных
Запустим инструмент для настройки подключения к базе данных:
В первом окне выберите Yes.

В качестве типа подключения укажите TCP/IP.

Так как база данных запущена на localhost, выберите его.

Если вы не меняли порт в docker-compose.yml, укажите 5432.

В качестве метода аутентификации администратора выберите password.

Для пользователя базы данных также выберите password.

Bareos использует базу данных с именем bareos и пользователя bareos.
Создадим базу данных.

Затем создадим пользователя.

Установим пароль пользователя.

Подтвердим пароль.

Теперь необходимо ввести данные администратора PostgreSQL, которые мы задавали в docker-compose.yml.
Имя пользователя: admin.

Введите пароль администратора PostgreSQL.

Пароль администратора потребуется ввести несколько раз в процессе настройки.
Чтобы убедиться, что база создана и работает, откройте браузер и перейдите по адресу http://<ip_сервера>:8080.
Залогиньтесь, используя имя пользователя bareos и ранее заданный пароль.

После авторизации должны отобразиться таблицы базы данных Bareos.

Теперь запустим службы:
Проверим, что службы работают, подключены к базе данных и не содержат ошибок:
Настройка веб-интерфейса Bareos WebUI
Для работы веб-интерфейса Bareos необходимо включить php8-fpm в Apache2.
Включите модули Apache для работы с PHP-FPM:
Активируйте конфигурацию PHP 8.1 FPM:
Перезагрузите Apache, чтобы изменения вступили в силу:
В Ubuntu AppArmor может блокировать доступ php-fpm к файлам веб-интерфейса. Разрешим необходимые пути:
Применим новые политики безопасности:
Теперь необходимо создать пользователя bareos. Для его создания, воспользуемся утилитой bconsole:
Создадим учетную запись admin для веб-интерфейса:
Вместо <пароль_пользователя> укажите желаемый пароль.
Применим изменения:
Выйти из bconsole можно сочетанием клавиш Ctrl + D.
Теперь можно открыть браузер и перейти по адресу http://<ip_сервера>/bareos-webui. Войти в систему можно, используя ранее созданные учетные данные.

Подключение S3-хранилища к Bareos Storage Director
Создадим файл с параметрами подключения:
Добавим в него следующую конфигурацию:
Данные для заполнения (<s3_access_key> и <s3_secret_access_key>) можно найти в информации о бакете в панели управления.

Конфигурация бэкапного устройства
Создадим файл:
Запишем в него информацию об устройстве. Укажите имя своего бакета в Device Options:
Дадим пользователю Bareos доступ к этим файлам:
Bareos может не подключаться к хранилищу, если включён TLS. Отключим его, добавив TlsEnable=no и TlsRequire=no в следующие файлы.
Откроем файл bareos-sd.conf:
Изменим содержимое:
Откроем файл bareos-dir.conf:
Изменим содержимое:
Запомните или сохраните пароль, указанный в Password из bareos-dir.conf, он понадобится на следующем шаге.
Подключение Bareos Storage Daemon к Bareos Director
В bconsole подключим bareos-storage-daemon к bareos-director, используя ранее сохранённый пароль:
Выполним команду:
В команде укажите <ip_сервера_бэкапов> и <sd_passwd>.
Примените конфигурацию:
Для применения изменений перезапустим службы:
Обратите внимание, что Bareos читает файлы конфигурации только в ASCII-кодировке. Если вы редактировали файлы способом, отличным от указанного в инструкции, может возникнуть ошибка. Чтобы это исправить, необходимо изменить кодировку файлов. Сделать это можно при помощи команды:
Настройка бэкапов
Создание пользователя для соединения
Сначала необходимо создать пользователя, через которого основной сервер будет соединяться с сервером бэкапов.
Войдем в bconsole:
Выполним команду:
В команде укажите два параметра:
-
<usr_ip>— внешний IP-адрес сервера, для которого будут создаваться бэкапы. -
<usr_pswd>— пароль для подключения. Его нужно придумать.
Примените изменения:
После выполнения команды в консоли появится подобный вывод:

Это сформированный конфигурационный файл с паролем пользователя. Сохраните значение из поля Password, оно понадобится для подключения сервера. Если пароль будет утерян, его можно найти с помощью команды:
Настройка пулов и вольюмов
Для хранения данных Bareos использует pool и volume:
- Pool — хранилище резервных копий, ограниченное размером S3-бакета.
- Volume — единица хранения данных, изначально предназначенная для сменных носителей, таких как ленты.
В нашем случае:
- Размер volume (
<i>) — должен быть равен полному объему информации сервера, который мы собираемся бэкапить. - Количество volumes (
<n>) — определяет, сколько копий данных необходимо хранить. - VolumeRetention (
<r>) — время хранения резервной копии в днях, после которого она будет помечена для перезаписи.
Данные из volume не удаляются, а только помечаются как стертые и подготовленные к перезаписи.
Настройка пула для полных бэкапов
Откроем файл конфигурации:
Отредактируйте, приведя к виду:
Настройка пула для инкрементальных бэкапов
Откроем файл:
Приведем к виду:
Создание FileSet
FileSet — это конфигурационный файл, в котором указывается, какие именно файлы или базы данных необходимо включить в бэкап, а также какие параметры будут использоваться при их копировании (например, уровень сжатия или метод проверки целостности данных).
FileSet для резервного копирования файлов в /home
Этот файлсет используется для бэкапа пользовательских данных, хранящихся в /home.
Создадим файл:
Добавим следующий конфиг:
Здесь:
-
Signature = MD5— включает проверку целостности данных. -
Compression = LZ4— используется быстрый алгоритм сжатия, который снижает нагрузку на CPU. -
File = "/home"— указывает, что резервное копирование будет выполняться для /home.
FileSet для резервного копирования баз данных MySQL
Для бэкапа MySQL необходимо использовать специальный плагин, позволяющий корректно копировать базы без прерывания работы сервера.
Создадим файл:
Добавим конфигурацию:
Здесь:
-
Plugin = "python3"— указывает, что для создания бэкапа будет использоваться плагин на Python. -
":module_name=bareos-fd-percona-xtrabackup"— использует Percona XtraBackup для создания бэкапа без остановки MySQL. -
":mycnf=/root/.my.cnf"— указывает путь к файлу конфигурации MySQL, содержащему учетные данные.
FileSet для резервного копирования баз данных PostgreSQL
Для PostgreSQL также используется специальный плагин, позволяющий создавать бэкапы без прерывания работы сервера.
Создадим файл:
Добавим:
Замените:
-
<psql_user>— на имя пользователя PostgreSQL. -
<psql_passwd>— на пароль от базы данных.
Параметры:
-
":db_host=/run/postgresql/"— указывает, что PostgreSQL работает через Unix-сокеты. -
":wal_archive_dir=/var/lib/pgsql/wal_archive/"— включает копирование WAL-журналов.
Установка прав для пользователя
Чтобы Bareos мог прочитать созданные файлы, дадим пользователю bareos необходимые права:
И обновить конфигурацию сервера bareos чтобы прочитать новые файлсеты:
Создание расписания бэкапов
Bareos позволяет задать расписание резервного копирования через параметр Schedule.
Запустим bconsole:
Создадим правило:
Применим изменение:
Мы задали расписание:
-
Полный бэкап (
Level=Full) выполняется раз в 3 дня в 00:00. -
Инкрементальный бэкап (
Level=Incremental) выполняется ежедневно в 01:00.
Настройка заданий резервного копирования
Bareos использует два типа конфигурационных файлов для бэкапов:
-
JobDefs — содержит общие настройки, которые могут использоваться в нескольких заданиях.
-
Job — конкретное задание резервного копирования с указанием клиентских данных.
Создание общих правил для заданий (JobDefs)
Открываем bconsole:
Добавляем правило:
Применим изменение:
Описание параметров:
-
Storage=S3_Object— указывает, что бэкапы будут храниться в S3. -
Level=Incremental— по умолчанию бэкап выполняется как инкрементальный. -
Pool=Incremental— используется пул для инкрементальных копий. -
FullBackupPool=Full— полные копии отправляются в пул Full. -
Schedule=BackupSchedule— задает расписание. -
Messages=Standard— формат логирования.
Создание задания для резервного копирования /home
Добавляем задачу:
Применим изменение:
Здесь:
-
Client=BackupUser— указывает, что бэкап выполняется для клиентаBackupUser. -
FileSet=HomeFileset— задает файловый набор с путями к данным.
Создание задания для восстановления данных
Чтобы можно было восстановить файлы, создадим задание RestoreJob:
Применим изменение:
Параметры:
-
Type=Restore— задает, что это задание восстановления. -
Storage=S3_Object— указывает хранилище. -
Pool=Incremental— используется пул инкрементальных бэкапов. -
Where="/"— файлы восстанавливаются в корневую директорию.
Очистка ненужных конфигурационных файлов
Bareos по умолчанию создает демонстрационные конфигурации, которые не используются в продакшен-среде. Их необходимо удалить:
Очистим базу данных от неиспользуемых записей:
Настройка сервера, который будем бэкапить
Установка Bareos File Daemon
Bareos использует службу bareos-filedaemon, которая должна быть установлена на сервере, с которого будут создаваться резервные копии.
Установка в Ubuntu
Добавим репозиторий Bareos:
Обновим список пакетов и установим Bareos File Daemon:
Включим и запустим Bareos File Daemon:
Установка в RHEL
Добавим правила для файрвола, открыв необходимые порты:
Добавим репозиторий Bareos:
Обновим кеш пакетов и установим Bareos File Daemon:
Включим и запустим Bareos File Daemon:
Подключение к серверу бэкапов
Теперь необходимо настроить подключение к Bareos Director, используя пароль, который был получен на этапе создания пользователя.
Открываем конфигурационный файл:
nano /etc/bareos/bareos-fd.d/director/bareos-dir.conf
Указываем следующие параметры:
Обязательно добавьте параметры
TlsEnable=noиTlsRequire=no, иначе сервер бэкапов не сможет подключиться.
Перезапускаем службу, чтобы применить изменения:
Включение поддержки плагинов на клиенте
Для резервного копирования баз данных необходимо включить поддержку плагинов в конфигурации клиента.
Открываем файл:
Приводим его к следующему виду:
Применяем изменения:
Установка пакетов для резервного копирования баз данных
MySQL
Для создания резервных копий MySQL потребуется Percona XtraBackup, а также два плагина: bareos-filedaemon-python3-plugin и bareos-filedaemon-percona-xtrabackup-python-plugin.
Установка в Ubuntu
Скачаем пакет Percona XtraBackup:
Установим пакет:
Установим плагины Bareos для работы с Percona XtraBackup:
Установка в RHEL
Скачаем пакет Percona XtraBackup:
Установим пакет:
Установим плагины Bareos для работы с Percona XtraBackup:
PostgreSQL
Для резервного копирования PostgreSQL необходимо установить пакеты bareos-filedaemon-python3-plugin, bareos-filedaemon-postgresql-python-plugin и pg8000 — драйвер Python для подключения к PostgreSQL.
Установка в Ubuntu
Установим плагины Bareos для PostgreSQL:
Установим pip для управления пакетами Python:
Установим библиотеку pg8000 для работы с PostgreSQL:
Установка в RHEL
Установим плагины Bareos для PostgreSQL:
Установим pip для управления пакетами Python:
Установим библиотеку pg8000 для работы с PostgreSQL:
Настройка WAL-архивации в PostgreSQL
Для корректного резервного копирования PostgreSQL необходимо включить WAL-архивацию.
Открываем конфигурацию PostgreSQL:
Приводим параметры к виду:
Здесь:
-
archive_mode = on— включает архивирование WAL. -
archive_command = 'cp %p /var/lib/pgsql/wal_archive/%f'— копирует WAL-журналы в /var/lib/pgsql/wal_archive/. -
archive_timeout = 60— задаёт интервал в 60 секунд для принудительного сохранения WAL.
Создадим директорию для хранения архивных WAL-файлов:
Настроим права доступа:
Применим изменения:
Если к базе данных ограничен внешний доступ, необходимо настроить доступ к базе с сервера бэкапов. Для этого отредактируйте файл:
Добавляем строку с IP-адресом сервера бэкапов:
Где <bareos_external_ip> — IP-адрес сервера бэкапов.
Перезапускаем PostgreSQL:
На этом настройка Bareos завершена. Мы установили и настроили сервер бэкапов, подключили клиентский сервер, настроили файловые наборы, расписание и S3-хранилище. Теперь система автоматически создаёт резервные копии и позволяет восстанавливать данные в случае необходимости.
Ручное создание резервной копии
Для проверки можно запустить тестовый бэкап вручную из консоли bconsole или через веб-интерфейс.
Создание бэкапа из консоли
- Открываем консоль управления Bareos:
- Запускаем задание:
- Выбираем нужное задание (например,
BackupJob) и подтверждаем запуск, введяyes. - Дожидаемся завершения бэкапа и проверяем его статус:
- Чтобы посмотреть логи последнего задания, используем:
Создание бэкапа через веб-интерфейс
- Открываем Bareos WebUI —
http://<ip_сервера>/bareos-webui. - В меню переходим в «Jobs» → «Run».
- Выбираем нужное задание, клиент и подтверждаем запуск.

- Ожидаем завершения выполнения задания и проверяем его статус во вкладке «Jobs» → «Show».