Bareos: корпоративное резервное копирование, которое переживёт что угодно
Привет! Я Евгений Семёнов, директор ITFresh. Хотите знать, какой инструмент лежит в основе самых ответственных инфраструктур наших клиентов? Это Bareos. Представьте себе: финансы, крупные проектные институты, производство — везде, где цена ошибки запредельна, мы доверяем Bareos. Это не просто система; это мощный форк Bacula, который активно развивается командой в Германии. У него есть всё: нативные плагины для самых современных гипервизоров, удобный WebUI, который сразу готов к работе, и всё это под открытой лицензией AGPL3. В своём рассказе я покажу вам весь путь развёртывания Bareos: от выбора архитектуры до первого успешно восстановленного байта. Будут скрипты, будет схема. Та самая, которую я лично внедрил уже у пятнадцати наших клиентов.
Архитектура 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 виртуальных ядер процессора, 16 ГБ оперативной памяти. Под систему и каталог достаточно будет SSD на 200 ГБ. А вот для хранения данных критичен HDD-массив в RAID-6, причём его объём должен быть минимум вдвое больше суммарного объёма данных.
# Репозиторий 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С, документооборот, плюс четыре виртуальные инфраструктуры на Proxmox. Их старое решение, самописные скрипты на rsync, уже не выдерживало нагрузки. Бэкап длился 36 часов — это почти полтора суток! А чтобы восстановить файл, которому две недели, приходилось тратить целый рабочий день. Разве это нормально в наше время?
Схема Bareos, которую мы развернули:
- Наш Director работает на Debian 12, размещённый прямо в дата-центре МТС Москва. А «сердце» его — это наш собственный сервер Dell с процессором Xeon Platinum 8280. Мощно, надёжно.
- Storage daemon расположен прямо тут же, рядом. Для него мы выделили целых 80 ТБ в дисковом массиве RAID-6. И это ещё не всё: на всякий случай предусмотрена S3-копия, которая хранится в нашем офлайн-хранилище. Двойная подстраховка, как говорится.
- Используем Always Incremental с хранением данных в течение 14 дней. Плюс к этому — еженедельный Virtual Full. Всё чётко.
- По части клиентов у нас полный набор: 55 машин под Linux, 14 под Windows. А для VMware используем специальный bareos-vmware-plugin, который работает сразу с тремя vCenter. Покрываем всё, что нужно.
- Используем надёжное PKI-шифрование, а мастер-ключ? Он хранится в вашем корпоративном HashiCorp Vault. Это максимальная защита, не правда ли?
- Для мониторинга у нас Prometheus. А чтобы вы всегда были в курсе, все отчёты прилетают прямо в Telegram-бот. Удобно, что тут скажешь!
Мы справились за 14 рабочих дней, а стоимость проекта составила 280 000 рублей. Результат не заставил себя ждать. Уже в марте 2025 года произошла первая серьёзная ситуация: по ошибке удалили архив CAD-моделей объёмом 1.7 ТБ. Паника? Нет! Мы восстановили всё за 6 часов 20 минут, и, что самое важное, никаких потерь данных не было. С Bareos показатель RPO (Recovery Point Objective) снизился до 2 часов, а RTO (Recovery Time Objective) — до 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.
