Это старая версия документа.


Bacula

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

Обзор

Bacula состоит из нескольких компонентов и сервисов для управления тем, какие файлы сохранять и где хранить резервные копии:

~~ **Bacula Director**: сервис, который управляет всеми операциями резервного копирования, восстановления, проверки и архивации.
~~ **Bacula Console**: приложение, позволяющее взаимодействовать с **Director**. Существует три версии **Console**:
  ~~ текстовая версия, основанная на командной строке.
  ~~ графический пользовательский интерфейс (GUI) для **Gnome**, основанный на GTK+.
  ~~ графический интерфейс на базе wxWidgets.
~~ **Bacula File**: она же программа **Bacula Client**. Это приложение устанавливается на машине, на которой производится резервное копирование, и оно отвечает на данные, отправленные по запросу **Director**.
~~ **Bacula Storage**: программа, которая выполняет хранение и восстановление данных на физических носителях.
~~ **Bacula Catalog**: отвечает за поддержку файловых индексов и томов баз данных для всех сохраняемых фалов, допуская быстрое нахождение и восстановление сохраненных файлов. **Catalog** поддерживает три различных базы данных: MySQL, PostgreSQL и SQLite.
~~ **Bacula Monitor**: позволяет отслеживать работу **Director** и сервисов **File** и **Storage**. На данный момент **Monitor** доступен только в виде GTK+ GUI приложения.

Эти сервисы и приложения могут быть запущены на разных серверах и клиентах или их можно установить на одной машине, если требуется резервное копирование одного диска или тома.

Установка

При использовании MySQL или PostgreSQL в качестве базы данных, вам уже должны быть доступны эти сервисы. Bacula не будет устанавливать их для вас.

Существует несколько пакетов, содержащих различные компоненты Bacula. Для установки Bacula введите в терминале:

sudo apt-get install bacula

При установке по умолчанию пакет bacula будет использовать базу данных MySQL для Catalog. Если вы хотите использовать SQLite или PostgreSQL, установите соответственно пакет bacula-director-sqlite3 или bacula-director-pgsql.

В процессе установки у вас спросят данные об администраторе базы данных и владельце базы данных bacula. Администратор базы данных требуется для получения необходимых прав на создание базы данных. Дополнительную информацию смотрите в разделе MySQL.

Настройка

Файлы настройки 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 введите следующую команду в терминале:

sudo 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 требуется перезагрузить:

sudo /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 на резервное копирование локального сервера на подключенное ленточное устройство.

Ссылки

  1. Дополнительные опции настройки Bacula смотрите в руководстве Bacula User's Manual.

  2. Домашняя страница Bacula содержит последние новости и доработки по Bacula.

  3. Также посетите страницу Bacula Ubuntu Wiki.