Для работы нам понадобится установленный пакет bareos-storage-droplet. Увы, на ubuntu такой пакет не доступен (какие где пакеты доступны - нужно смотреть в документации).

Создаем устройство в хранилище /etc/bareos/bareos-sd.d/device/S3_ObjectStorage.conf из следующем содержанием

Device {
  Name = Backblaze_S3_Object1
  Media Type = S3_Object1
  Archive Device = S3 Object Storage
  Device Options = "profile=/etc/bareos/bareos-sd.d/device/droplet/backblaze.profile,bucket=test-bareos,chunksize=100M,iothreads=8"
  Device Type = droplet
  Label Media = yes
  Random Access = yes
  Automatic Mount = yes
  Removable Media = no
  Always Open = no
  Description = "S3 device"
  Maximum Concurrent Jobs = 1
}

Где test-bareos - имя бакета.

Нужно обратить внимание на размер чанка для хранения. От этого зависит скорость восстановления данных. В среднем нужно иметь окно в двойной размер максимального размера файла, который бекапится. Но ставить слишком маленький или слишком большой размер - не совсем корректно. Это число подбирается в процессе запуска и работы.

В хранилище оно будет выглядит как <volume name>/<chunk id>. Сам <chunk id> выглядит как четыре цыфренное число.

В файле /etc/bareos/bareos-sd.d/device/droplet/backblaze.profile приводим к такому выгляде:

host = s3.us-west-001.backblazeb2.com:443
use_https = true
backend = s3
access_key = "<keyID>"
secret_key = "<applicationKey>"
pricing_dir = ""

Прежде чем заполнять - нужно создать Application key.

Где

  • host - копируем адрес с S3 Endpoint, не забывая указать https порт. В противном случае оно работать не будет.
  • access_key - копируем с keyID
  • applicationKey - копируем с applicationKey
  • pricing_dir - оставляем пустым

В этой интеграции есть много разных плюсов.

Когда происходит резервное копирования - данные сразу заливаются на S3. Благодаря опции iothreads можно избежать сбоев загрузки данных во время записи - буферизируя данные.

Дальше идем на директор и настраиваем.

В файле /etc/bareos/bareos-dir.d/storage/S3_Object.conf прописываем

Storage {
  Name = S3_Object
  Address = ""
  Password = ""
  Device = "Backblaze_S3_Object1"
  Media Type = S3_Object1
}

Где:

  • Address - адрес вашего сторедж сервера
  • Password - пароль подключения
  • Device и Media Type - берем с стореджа.

Дальше, чтоб пользовать этот новый сторедж - нужно прописать в пулах его. Пример:

Pool {
  ...
  Storage = S3_Object
  ...
}