4.9 Bacula

Bacula – это программа резервного копирования, позволяющая сохранять, восстанавливать и проверять данные через вашу сеть. Для Bacula существуют клиенты под Linux, Windows и Mac OS X, превращая ее в кросс-платформенное сетевое решение.
Bacula состоит из нескольких компонентов и сервисов для управления тем, какие файлы сохранять и где хранить резервные копии:
Bacula Director: сервис, который управляет всеми операциями резервного копирования, восстановления, проверки и архивации.
Bacula Console: приложение, позволяющее взаимодействовать с Director. Существует три версии Console:

  1. текстовая версия, основанная на командной строке.
  2. графический пользовательский интерфейс (GUI) для Gnome, основанный на GTK+.
  3. графический интерфейс на базе wxWidgets.

Bacula File: она же программа Bacula Client. Это приложение устанавливается на машине, на которой производится резервное копирование, и оно отвечает на данные, отправленные по запросу Director.
Bacula Storage: программа, которая выполняет хранение и восстановление данных на физических носителях.
Bacula Catalog: отвечает за поддержку файловых индексов и томов баз данных для всех сохраняемых фалов, допуская быстрое нахождение и восстановление сохраненных файлов. Catalog поддерживает три различных базы данных: MySQL, PostgreSQL и SQLite.
Bacula Monitor: позволяет отслеживать работу Director и сервисов File и Storage. На данный момент Monitor доступен только в виде GTK+ GUI приложения.
Эти сервисы и приложения могут быть запущены на разных серверах и клиентах или их можно установить на одной машине, если требуется резервное копирование одного диска или тома.
При установке по умолчанию пакет bacula будет использовать базу данных MySQL для Catalog. Если вы хотите использовать SQLite или PostgreSQL, установите соответственно пакет bacula-director-sqlite3 или bacula-director-pgsql.
В процессе установки у вас спросят данные об администраторе базы данных и владельце базы данных bacula. Администратор базы данных требуется для получения необходимых прав на создание базы данных.
Файлы настройки Bacula форматированы на основе ресурсов, включающих директивы, обрамленные фигурными скобками “{}”. Каждый компонент Bacula имеет индивидуальный файл в каталоге /etc/bacula.
Различные компоненты Bacula должны авторизовывать себя друг для друга. Это решается использованием директивы password. Например, пароль в ресурсе Storage файла /etc/bacula/bacula-dir.conf должен соответствовать паролю ресурса Director файла /etc/bacula/bacula-sd.conf.
По умолчанию настраивается задание резервного копирования Client1 для архивирования Bacula Catalog. Если вы планируете использовать сервер для резервного копирования более чем на одном клиенте, вам потребуется изменить имя этого задания на что-то более осмысленное. Для переименования отредактируйте файл /etc/bacula/bacula-dir.conf

#
# Define the main nightly save backup job
#   By default, this job will back up to disk in
Job {
  Name = "BackupServer"
  JobDefs = "DefaultJob"
  Write Bootstrap = "/var/lib/bacula/Client1.bsr"
}

В примере имя задания изменено на BackupServer в соответствии с сетевым именем машины. Можете заменить “BackupServer” на соответствующее сетевое имя вашего сервера или другое описательное название.
Требуется использовать Console для запросов к Director по поводу заданий, но чтобы обычный пользователь мог использовать Console, он должен быть включен в группу bacula. Чтобы добавить пользователя в группу bacula введите следующую команду в терминале:

adduser $username bacula

Замените $username на актуальное имя пользователя. Также, если вы добавили в группу текущего пользователя, вам придется выйти из системы и зайти снова, чтобы применились новые права доступа.
Далее описывается как сделать резервную копию определенных каталогов на единственном сервере на локальное ленточное устройство.

  1. Для начала требуется настроить устройство хранения. Отредактируйте /etc/bacula/bacula-sd.conf, добавив:
    Device {
      Name = "Tape Drive"
      Device Type = tape
      Media Type = DDS-4
      Archive Device = /dev/st0
      Hardware end of medium = No;
      AutomaticMount = yes;               # when device opened, read it
      AlwaysOpen = Yes;
      RemovableMedia = yes;
      RandomAccess = no;
      Alert Command = "sh -c 'tapeinfo -f %c | grep TapeAlert'"
    }
    

    Этот пример для ленточного устройства DDS-4. Измените “Media Type” и “Archive Device” в соответствии с вашим оборудованием.
    Вы также можете раскомментировать один из примеров в этом файле.

  2. После редактирования файла /etc/bacula/bacula-sd.conf сервис Storage требуется перезагрузить:
    /etc/init.d/bacula-sd restart
  3. Теперь добавьте ресурс Storage в файл /etc/bacula/bacula-dir.conf для использования нового устройства:
    # Definition of "Tape Drive" storage device
    Storage {
      Name = TapeDrive
      # Do not use "localhost" here    
      Address = backupserver               # N.B. Use a fully qualified name here
      SDPort = 9103
      Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3LT3Cgkiyjc"
      Device = "Tape Drive"
      Media Type = tape
    }
    

    Директива Address должна быть полностью квалифицированным доменным именем (FQDN) сервера. Замените backupserver на актуальное сетевое имя.
    Также убедитесь, что директива Password соответствует строке пароля в /etc/bacula/bacula-sd.conf.

  4. Создайте новый FileSet, который будет определять какие каталоги копировать, добавив:
    # LocalhostBacup FileSet.
    FileSet {
      Name = "LocalhostFiles"
      Include {
        Options {
          signature = MD5
          compression=GZIP
        }
        File = /etc
        File = /home
      }
    }
    

    Этот FileSet задает резервное копирование для каталогов /etc и /home. Директивы ресурса Options настраивают FileSet на создание контрольных сумм MD5 для каждого сохраненного файла и сжатие файлов с использованием GZIP.

  5. Далее создайте новое расписание Schedule для задачи резервного копирования:
    # LocalhostBackup Schedule -- Daily.
    Schedule {
      Name = "LocalhostDaily"
      Run = Full daily at 00:01
    }
    

    Задание будет запускаться каждый день в 00:01. Существует множество других доступных опций расписаний.

  6. Наконец, создайте задание:
    # Localhost backup.
    Job {
      Name = "LocalhostBackup"
      JobDefs = "DefaultJob"
      Enabled = yes
      Level = Full
      FileSet = "LocalhostFiles"
      Schedule = "LocalhostDaily"
      Storage = TapeDrive
      Write Bootstrap = "/var/lib/bacula/LocalhostBackup.bsr"
    }  
    

    Задание будет выполнять полную резервную копию каждый день на ленту.

  7. Каждая используемая лента должна иметь метку. Если текущая лента метки не имеет, Bacula отправит email с оповещением. Чтобы установить метку на ленту с помощью Console, введите в терминале:
    bconsole
    
  8. В командной строке Bacula Console введите:
    label
    
  9. Вам предложат выбрать один из ресурсов Storage:
    Automatically selected Catalog: MyCatalog
    Using Catalog "MyCatalog"
    The defined Storage resources are:
         1: File
         2: TapeDrive
    Select Storage resource (1-2):2
    
  10. Введите новое имя тома:
    Enter new Volume name: Sunday
    Defined Pools:
         1: Default
         2: Scratch
    

    Замените Sunday на соответствующую метку.

  11. Теперь выберите накопитель:
    Select the Pool (1-2): 1
    Connecting to Storage daemon TapeDrive at backupserver:9103 ...
    Sending label command for Volume "Sunday" Slot 0 ...
    

    Таким образом настроена Bacula на резервное копирование локального сервера на подключенное ленточное устройство.

Если вы нашли ошибку, выделите текст и нажмите Ctrl+Enter.