· 18 мин чтения

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

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

Привет! Я Евгений Семёнов, директор ITFresh. Хотите знать, какой инструмент лежит в основе самых ответственных инфраструктур наших клиентов? Это Bareos. Представьте себе: финансы, крупные проектные институты, производство — везде, где цена ошибки запредельна, мы доверяем Bareos. Это не просто система; это мощный форк Bacula, который активно развивается командой в Германии. У него есть всё: нативные плагины для самых современных гипервизоров, удобный WebUI, который сразу готов к работе, и всё это под открытой лицензией AGPL3. В своём рассказе я покажу вам весь путь развёртывания Bareos: от выбора архитектуры до первого успешно восстановленного байта. Будут скрипты, будет схема. Та самая, которую я лично внедрил уже у пятнадцати наших клиентов.

Архитектура 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 виртуальных ядер процессора, 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, которую мы развернули:

Мы справились за 14 рабочих дней, а стоимость проекта составила 280 000 рублей. Результат не заставил себя ждать. Уже в марте 2025 года произошла первая серьёзная ситуация: по ошибке удалили архив CAD-моделей объёмом 1.7 ТБ. Паника? Нет! Мы восстановили всё за 6 часов 20 минут, и, что самое важное, никаких потерь данных не было. С Bareos показатель RPO (Recovery Point Objective) снизился до 2 часов, а RTO (Recovery Time Objective) — до 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 подписчика в целях рассылки информационных и рекламных материалов до момента отзыва согласия.