Bareos: корпоративный бэкап для гетерогенной среды

Bareos — форк Bacula для корпоративных задач

Bareos (Backup Archiving Recovery Open Sourced) — это форк Bacula, развиваемый независимой командой с 2010 года. Bareos унаследовал архитектуру Bacula и расширил её веб-интерфейсом, поддержкой облачных хранилищ, дедупликацией и улучшенным шифрованием.

Архитектура Bareos состоит из четырёх компонентов:

  • Director (DIR) — центральный сервер управления, планирует задания и координирует процессы
  • Storage Daemon (SD) — управляет устройствами хранения (диски, ленты, облако)
  • File Daemon (FD) — агент на резервируемом сервере, отправляет данные
  • Catalog (каталог) — база данных PostgreSQL с метаданными всех бэкапов

Bareos поддерживает бэкап Linux, Windows, macOS, VMware, MySQL/PostgreSQL, LDAP и других систем. Типы бэкапов: полный (Full), инкрементальный (Incremental), дифференциальный (Differential).

Установка Bareos Director и Storage Daemon

Устанавливаем серверные компоненты Bareos на Ubuntu 22.04:

# Добавляем репозиторий
wget -qO- https://download.bareos.org/current/xUbuntu_22.04/Release.key | gpg --dearmor > /etc/apt/keyrings/bareos.gpg
echo "deb [signed-by=/etc/apt/keyrings/bareos.gpg] https://download.bareos.org/current/xUbuntu_22.04/ /" > /etc/apt/sources.list.d/bareos.list

sudo apt update
sudo apt install bareos bareos-database-postgresql bareos-webui -y

Инициализируем базу данных каталога:

sudo -u postgres /usr/lib/bareos/scripts/create_bareos_database
sudo -u postgres /usr/lib/bareos/scripts/make_bareos_tables
sudo -u postgres /usr/lib/bareos/scripts/grant_bareos_privileges

Запускаем службы:

sudo systemctl enable --now bareos-dir bareos-sd bareos-fd
sudo systemctl enable --now apache2  # для WebUI

Веб-интерфейс доступен по адресу http://server:9100. Логин по умолчанию: admin, пароль задаётся при установке.

Настройка пулов томов и хранилища

Пулы томов определяют политику хранения резервных копий — сколько хранить, куда писать, когда переиспользовать. Основная конфигурация в /etc/bareos/bareos-dir.d/.

Создаём пулы для разных типов бэкапов. Файл /etc/bareos/bareos-dir.d/pool/Full.conf:

Pool {
  Name = Full
  Pool Type = Backup
  Recycle = yes
  AutoPrune = yes
  Volume Retention = 90 days
  Maximum Volume Bytes = 50G
  Maximum Volumes = 100
  Label Format = "Full-"
  Storage = File-Storage
}

Файл /etc/bareos/bareos-dir.d/pool/Incremental.conf:

Pool {
  Name = Incremental
  Pool Type = Backup
  Recycle = yes
  AutoPrune = yes
  Volume Retention = 30 days
  Maximum Volume Bytes = 10G
  Maximum Volumes = 200
  Label Format = "Inc-"
  Storage = File-Storage
}

Настройка Storage Daemon для записи на диск /etc/bareos/bareos-sd.d/device/FileStorage.conf:

Device {
  Name = FileStorage
  Media Type = File
  Archive Device = /backup/bareos
  LabelMedia = yes
  Random Access = yes
  AutomaticMount = yes
  RemovableMedia = no
  AlwaysOpen = no
  Maximum Concurrent Jobs = 5
}
sudo mkdir -p /backup/bareos
sudo chown bareos:bareos /backup/bareos

Настройка клиентов (File Daemon)

На каждом резервируемом сервере устанавливается File Daemon. Рассмотрим установку для Linux и Windows.

Linux-клиент

На клиентском сервере:

sudo apt install bareos-filedaemon -y

Конфигурация /etc/bareos/bareos-fd.d/director/bareos-dir.conf:

Director {
  Name = bareos-dir
  Password = "SecretFDPassword123"
}

На Director добавляем описание клиента /etc/bareos/bareos-dir.d/client/web-01.conf:

Client {
  Name = web-01-fd
  Address = 10.0.1.20
  Password = "SecretFDPassword123"
  Catalog = MyCatalog
  File Retention = 90 days
  Job Retention = 180 days
  AutoPrune = yes
}

Windows-клиент

Скачайте установщик Bareos File Daemon для Windows с официального сайта. При установке укажите:

  • Director Name: bareos-dir
  • Director Password: пароль, заданный на Director
  • Client Name: win-srv-01-fd

На Director добавляем клиента:

Client {
  Name = win-srv-01-fd
  Address = 10.0.1.30
  Password = "WinFDPassword456"
  Catalog = MyCatalog
  File Retention = 90 days
  Job Retention = 180 days
}

FileSet для Windows-сервера:

FileSet {
  Name = "Windows-Full"
  Include {
    Options {
      Signature = SHA256
      Compression = LZ4
      VSS = yes
    }
    File = "C:/Users"
    File = "C:/ProgramData"
    File = "D:/Shares"
  }
  Exclude {
    File = "C:/Windows/Temp"
    File = "C:/Users/*/AppData/Local/Temp"
  }
}

Создание заданий и расписаний

Задание (Job) объединяет клиента, FileSet, расписание и пул томов. Создаём расписание /etc/bareos/bareos-dir.d/schedule/WeeklyCycle.conf:

Schedule {
  Name = "WeeklyCycle"
  Run = Full 1st sun at 02:00
  Run = Differential 2nd-5th sun at 02:00
  Run = Incremental mon-sat at 02:00
}

Задание для бэкапа веб-сервера /etc/bareos/bareos-dir.d/job/web-01-backup.conf:

Job {
  Name = "web-01-backup"
  Type = Backup
  Level = Incremental
  Client = web-01-fd
  FileSet = "Linux-Full"
  Schedule = "WeeklyCycle"
  Messages = Standard
  Pool = Incremental
  Full Backup Pool = Full
  Differential Backup Pool = Differential
  Priority = 10
  Maximum Concurrent Jobs = 1
  Write Bootstrap = "/var/lib/bareos/%c.bsr"
}

FileSet для Linux-серверов:

FileSet {
  Name = "Linux-Full"
  Include {
    Options {
      Signature = SHA256
      Compression = LZ4
      One FS = no
      ACL Support = yes
      XAttr Support = yes
    }
    File = /
  }
  Exclude {
    File = /proc
    File = /sys
    File = /dev
    File = /run
    File = /tmp
    File = /var/cache
    File = /var/tmp
  }
}

Перезагружаем Director и проверяем:

sudo bareos-dir -t   # проверка конфигурации
sudo systemctl reload bareos-dir

# Запуск задания вручную через bconsole
bconsole
*run job=web-01-backup level=Full yes
*status dir

Восстановление данных

Восстановление — самая важная операция. Bareos поддерживает восстановление отдельных файлов, каталогов и полное восстановление на тот же или другой сервер.

Восстановление через bconsole:

bconsole
*restore
# Выберите тип восстановления:
# 5: Select the most recent backup for a client
# Выберите клиента и файлы для восстановления

# Восстановление конкретных файлов
*restore client=web-01-fd where=/tmp/restore
cd /etc/nginx
mark *
done
yes

Восстановление на другой сервер:

*restore client=web-01-fd restoreclient=web-02-fd where=/tmp/restore
# web-01-fd — откуда берём бэкап
# web-02-fd — куда восстанавливаем

Проверка целостности бэкапа:

*verify job=web-01-backup level=VolumeToCatalog

Список всех бэкапов клиента:

*list jobs client=web-01-fd
*list files jobid=123

Бэкап баз данных

Для корректного бэкапа баз данных необходимо использовать pre/post-скрипты, которые создают дамп перед началом резервного копирования.

Плагин для PostgreSQL — конфигурация FileSet:

FileSet {
  Name = "PostgreSQL-Dump"
  Include {
    Options {
      Signature = SHA256
      Compression = LZ4
    }
    Plugin = "python3"
              ":module_name=bareos-fd-postgresql"
              ":db_host=localhost"
              ":db_user=bareos"
              ":db_password=BareosDBPass"
  }
}

Альтернативный подход — RunScript:

Job {
  Name = "mysql-backup"
  Type = Backup
  Client = db-01-fd
  FileSet = "MySQL-Dumps"
  RunScript {
    RunsWhen = Before
    RunsOnClient = yes
    Command = "/usr/local/bin/bareos-mysql-dump.sh"
  }
  RunScript {
    RunsWhen = After
    RunsOnClient = yes
    Command = "rm -f /var/lib/bareos-dumps/mysql/*.sql.gz"
  }
}

Скрипт /usr/local/bin/bareos-mysql-dump.sh:

#!/bin/bash
DUMP_DIR=/var/lib/bareos-dumps/mysql
mkdir -p $DUMP_DIR

for DB in $(mysql -e 'SHOW DATABASES' -s --skip-column-names | grep -Ev '^(information_schema|performance_schema|sys)$'); do
    mysqldump --single-transaction --routines --triggers $DB | gzip > "$DUMP_DIR/$DB.sql.gz"
done

Часто задаваемые вопросы

Bareos — форк Bacula с 2010 года. Основные отличия: встроенный WebUI, поддержка облачных хранилищ (S3, Azure, GCS), улучшенная дедупликация, пассивный режим клиента (для NAT), шифрование TLS по умолчанию. Конфигурационные файлы совместимы на 95%, миграция с Bacula проста.

Для малых и средних инфраструктур (до 50 серверов) дисковое хранилище оптимально по соотношению цена/удобство. Ленточные библиотеки имеют смысл при объёмах более 50 ТБ и требованиях к долгосрочному хранению (5+ лет). Bareos поддерживает оба варианта, включая гибридные схемы disk-to-disk-to-tape.

Используйте сжатие LZ4 (быстрое, низкая нагрузка на CPU), включите Accurate = yes для точных инкрементальных бэкапов, увеличьте Maximum Concurrent Jobs на Storage Daemon. Для серверов с миллионами файлов используйте плагин bpipe с tar для потоковой передачи.

Да, Bareos поддерживает S3-совместимые хранилища через плагин bareos-storage-droplet. Настройте Device с Device Type = droplet и укажите S3 endpoint, bucket, access key и secret key. Это позволяет хранить бэкапы в AWS S3, MinIO, Yandex Object Storage и других S3-совместимых сервисах.

Нужна помощь с настройкой?

Специалисты АйТи Фреш помогут с внедрением и настройкой — 15+ лет опыта, обслуживание от 15 000 ₽/мес

📞 Связаться с нами
#Bareos#резервное копирование#бэкап сервер#корпоративный бэкап#восстановление данных#Bacula альтернатива#бэкап Linux Windows#пулы томов
Комментарии 0

Оставить комментарий

загрузка...