· 18 мин чтения

Bareos: корпоративное резервное копирование, которое переживёт что угодно

Семёнов Евгений Сергеевич, директор АйТи Фреш. Bareos — инструмент, на котором у нас на практике работают самые ответственные инфраструктуры: финансы, проектные институты, производство. Форк Bacula, активная команда в Германии, нативные плагины под современные гипервизоры, WebUI из коробки, AGPL3-лицензия. Разберу полный цикл развёртывания — от архитектуры до первого успешного восстановления, со скриптами и схемой, которую я повторял у 15 клиентов.

Архитектура Bareos

Bareos состоит из четырёх компонентов, которые можно ставить на одну машину или разносить по разным физическим серверам:

КомпонентНазначениеПорт
bareos-director (bareos-dir)Мозг — планирование, управление, каталог9101
bareos-storage (bareos-sd)Хранилище данных — диск/лента/S39103
bareos-filedaemon (bareos-fd)Агент на клиенте9102
bareos-webuiВеб-интерфейс на PHP80/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, которую мы развернули:

Проект занял 14 рабочих дней, стоимость — 280 000 руб. Первое массовое восстановление произошло в марте 2025 — ошибочное удаление 1.7 ТБ архива CAD-моделей. Операция заняла 6 часов 20 минут, потерь не было. RPO опустилось до 2 часов, RTO — 4 часа на 90% сценариев.

Типичные ошибки и как их избежать

Развернём 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.

Подпишитесь на рассылку ITfresh

Раз в неделю — практические гайды для руководителя IT и сисадмина: безопасность, 1С, миграции, резервные копии, лайфхаки из реальных проектов.

Реквизиты оператора персональных данных

ООО «АЙТИ-ФРЕШ», ИНН 7719418495, КПП 771901001. Юридический адрес: 105523, г. Москва, Щёлковское шоссе, д. 92, корп. 7. Контакт: info@itfresh.ru, +7 903 729-62-41. Оператор обрабатывает e-mail подписчика в целях рассылки информационных и рекламных материалов до момента отзыва согласия.