Bareos: корпоративное резервное копирование, которое переживёт что угодно
Семёнов Евгений Сергеевич, директор АйТи Фреш. Bareos — инструмент, на котором у нас на практике работают самые ответственные инфраструктуры: финансы, проектные институты, производство. Форк Bacula, активная команда в Германии, нативные плагины под современные гипервизоры, WebUI из коробки, AGPL3-лицензия. Разберу полный цикл развёртывания — от архитектуры до первого успешного восстановления, со скриптами и схемой, которую я повторял у 15 клиентов.
Архитектура Bareos
Bareos состоит из четырёх компонентов, которые можно ставить на одну машину или разносить по разным физическим серверам:
| Компонент | Назначение | Порт |
|---|---|---|
| bareos-director (bareos-dir) | Мозг — планирование, управление, каталог | 9101 |
| bareos-storage (bareos-sd) | Хранилище данных — диск/лента/S3 | 9103 |
| bareos-filedaemon (bareos-fd) | Агент на клиенте | 9102 |
| bareos-webui | Веб-интерфейс на PHP | 80/443 |
Каталог — PostgreSQL с метаданными всех job, файлов, томов, клиентов. Обычно живёт на том же сервере, где Director. Для крупных инсталляций разносят.
Подготовка сервера
Типовой конфиг сервера Bareos для офиса на 50 клиентов: Debian 12, 6 vCPU, 16 ГБ RAM, SSD 200 ГБ под систему и каталог, HDD-массив в RAID-6 под хранилище (2× от суммарного объёма данных).
# Репозиторий Bareos для Debian 12
wget -qO- https://download.bareos.org/current/Debian_12/add_bareos_repositories.sh \
| bash
apt update
apt install -y bareos bareos-database-postgresql bareos-webui \
postgresql apache2 php-bareos-webui
# Инициализация БД
su postgres -c '/usr/lib/bareos/scripts/create_bareos_database'
su postgres -c '/usr/lib/bareos/scripts/make_bareos_tables'
su postgres -c '/usr/lib/bareos/scripts/grant_bareos_privileges'
systemctl enable --now bareos-dir bareos-sd bareos-fd apache2
Конфигурация — ресурсы и job
Bareos-config разбит на ресурсы. Каждый ресурс — отдельный файл в /etc/bareos/bareos-dir.d/. Структура каталогов:
/etc/bareos/bareos-dir.d/
├── catalog/ # База каталога
├── client/ # Клиенты (file daemons)
├── console/ # Доступ консоли
├── director/ # Сам Director
├── fileset/ # Что бэкапить
├── job/ # Задания
├── jobdefs/ # Шаблоны заданий
├── messages/ # Уведомления
├── pool/ # Пулы томов
├── profile/ # Профили ACL
├── schedule/ # Расписание
└── storage/ # Storage daemons
Клиент на Linux
# На клиенте
wget -qO- https://download.bareos.org/current/Debian_12/add_bareos_repositories.sh \
| bash
apt install -y bareos-filedaemon
systemctl enable --now bareos-fd
# /etc/bareos/bareos-fd.d/director/bareos-dir.conf
Director {
Name = bareos-dir
Password = "пароль_сгенерированный_на_директоре"
}
На сервере — регистрация клиента:
# /etc/bareos/bareos-dir.d/client/web01.conf
Client {
Name = web01-fd
Address = web01.corp.example.ru
Password = "пароль_совпадает_с_клиентом"
Catalog = MyCatalog
File Retention = 180 days
Job Retention = 365 days
}
Fileset — что бэкапить
# /etc/bareos/bareos-dir.d/fileset/LinuxServer.conf
FileSet {
Name = "LinuxServerSet"
Include {
Options {
signature = MD5
compression = LZ4
aclsupport = yes
xattrsupport = yes
}
File = /etc
File = /home
File = /var/www
File = /var/lib/mysql
File = /var/vmail
}
Exclude {
File = /var/cache
File = /tmp
File = /proc
File = /sys
File = /dev
File = /var/lib/mysql/*.pid
}
}
Schedule — расписание
# /etc/bareos/bareos-dir.d/schedule/Daily.conf
Schedule {
Name = "DailyCycle"
Run = Full 1st sat at 22:00
Run = Differential 2nd-5th sat at 22:00
Run = Incremental mon-fri at 22:00
}
Job — задание бэкапа
# /etc/bareos/bareos-dir.d/job/BackupWeb01.conf
Job {
Name = "backup-web01"
Client = web01-fd
JobDefs = "DefaultJob"
FileSet = "LinuxServerSet"
Pool = "Incremental"
Full Backup Pool = "Full"
Differential Backup Pool = "Differential"
Schedule = "DailyCycle"
Messages = Standard
Storage = File
Write Bootstrap = "/var/lib/bareos/%c.bsr"
Priority = 10
}
Пулы томов и ретеншн
# /etc/bareos/bareos-dir.d/pool/Full.conf
Pool {
Name = Full
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 365 days
Maximum Volume Bytes = 50G
Maximum Volumes = 50
Label Format = "Full-"
}
Retention + AutoPrune — автоматическое удаление старых томов. Maximum Volume Bytes ограничивает размер одного файла тома (удобнее работать с кусками).
WebUI и консоль
WebUI ставится на тот же сервер, Apache/Nginx с PHP-FPM. После установки открываем https://backup.corp.example.ru/bareos-webui/, логинимся пользователем, созданным через bconsole:
bconsole
*configure add console name=admin profile=webui-admin password="StrongPass123"
*reload
В WebUI видно все job, клиенты, пулы, можно запустить бэкап или восстановление в три клика.
Дедупликация — Always Incremental
Классика Bareos — Always Incremental схема. Полный бэкап делается один раз, дальше — только инкременты. Раз в неделю Bareos консолидирует инкременты в virtual full, физически не читая исходные данные с клиента. Плюсы: экономия трафика и времени.
# Настраиваем Job с Always Incremental
Job {
Name = "backup-file01-ai"
JobDefs = "DefaultJob"
Client = file01-fd
FileSet = "LinuxServerSet"
Accurate = yes
Always Incremental = yes
Always Incremental Job Retention = 7 days
Always Incremental Keep Number = 7
Always Incremental Max Full Age = 30 days
Pool = AI-Incremental
Full Backup Pool = AI-Consolidated
}
Шифрование данных
На клиенте создаём пару ключей PKI:
# На клиенте
openssl genrsa -out /etc/bareos/master.key 4096
openssl req -new -x509 -key /etc/bareos/master.key \
-out /etc/bareos/master.cert -days 3650
# В bareos-fd.conf клиента
FileDaemon {
...
PKI Signatures = Yes
PKI Encryption = Yes
PKI Keypair = "/etc/bareos/master.cert"
PKI Master Key = "/etc/bareos/master.cert"
}
Мастер-ключ храните отдельно (сейф, Vault, HSM) — без него восстановить зашифрованный бэкап нельзя.
Восстановление через bconsole
bconsole
*restore
# Выбор клиента, job, файлов через интерактивное меню
# Например восстановить директорию /var/www на web01 из последнего бэкапа:
# select all current client=web01-fd done
# ls, mark *, done
После запуска job Bareos создаёт restore-задание, которое можно мониторить в WebUI. Данные возвращаются в /tmp/bareos-restores/ по умолчанию или по указанному пути.
Реальный кейс: 3 офиса, 28 ТБ, 72 клиента
В ноябре 2024 обратилось проектно-изыскательское бюро — 3 офиса в Москве и Казани, 72 сервера, 28 ТБ данных (CAD-файлы, базы 1С, документооборот, 4 виртуальные инфраструктуры Proxmox). Старое решение на скриптах с rsync не справлялось: бэкап занимал 36 часов, восстановление файла из двухнедельной давности — целый рабочий день.
Схема Bareos, которую мы развернули:
- Director на Debian 12 в дата-центре МТС Москва (наш Dell Xeon Platinum 8280).
- Storage daemon рядом, 80 ТБ дискового массива RAID-6 + S3-копия в офлайн-хранилище.
- Always Incremental со сроком жизни 14 дней и Virtual Full раз в неделю.
- Клиенты Linux (55 шт.) + Windows (14 шт.) + VMware через bareos-vmware-plugin (3 vCenter).
- PKI-шифрование со мастер-ключом в корпоративном HashiCorp Vault.
- Мониторинг Prometheus + отчёты в Telegram-бот.
Проект занял 14 рабочих дней, стоимость — 280 000 руб. Первое массовое восстановление произошло в марте 2025 — ошибочное удаление 1.7 ТБ архива CAD-моделей. Операция заняла 6 часов 20 минут, потерь не было. RPO опустилось до 2 часов, RTO — 4 часа на 90% сценариев.
Типичные ошибки и как их избежать
- Забывают про каталог (PostgreSQL). Без него весь бэкап становится кучей томов, из которых сложно что-то восстановить. Бэкапьте каталог отдельно — ежедневно.
- Храните конфиги в Git. Я переношу /etc/bareos в репо — видна история изменений, легко откатиться.
- Не забывайте про pool retention. Увидел кейс, где Maximum Volumes было 10 и после двух недель бэкап молча рециклировал старые.
- PKI-ключ на том же сервере — плохая идея. Если упадёт сервер — нечем расшифровать копии.
- Тестовое восстановление раз в квартал на отдельный сервер — обязательная процедура. Иначе не узнаете о проблеме до реального кризиса.
Развернём Bareos у вас под ключ
От проектирования и подбора железа до настройки расписания, шифрования и мониторинга. 15+ лет в резервном копировании корпоративных инфраструктур. Размещение копий на нашем оборудовании в дата-центре МТС Москва: 8 серверов Dell Xeon Platinum 8280, 40G Mellanox, физическая изоляция. От 180 000 руб. за проект, сопровождение от 25 000 руб./мес.
Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш
FAQ — частые вопросы о Bareos
- Чем Bareos отличается от Bacula?
- Bareos — форк Bacula 2010 года с открытым WebUI, современной документацией и активной немецкой командой. Базовые компоненты совместимы, но Bareos развивается быстрее и имеет нативные плагины для Proxmox, VMware, PostgreSQL.
- Нужна ли лицензия для коммерческого использования?
- Нет, Community-редакция лицензирована AGPL3. Bareos Enterprise — платная поддержка с SLA, дополнительные плагины и долгая поддержка пакетов.
- Как устроена дедупликация?
- Always-Incremental схема плюс Virtual Full консолидация. Блочная дедупликация на стороне ФС (ZFS/BTRFS). В Enterprise — встроенный deduplication-plugin.
- Какую СУБД использовать под каталог?
- Рекомендуется PostgreSQL — нативная поддержка, производительность на больших каталогах, надёжность. SQLite только для тестов.
- Как бэкапить виртуальные машины?
- Для VMware — bareos-vmware-plugin через VDDK. Для Proxmox — bareos-filedaemon-proxmox. Для Hyper-V и KVM — через File Daemon в гостевой ОС или plugin.