Поиск по сайту:

Как установить сервер Bacula на Ubuntu 14.04


Введение

Bacula — это решение для сетевого резервного копирования с открытым исходным кодом, которое позволяет создавать резервные копии и выполнять восстановление данных ваших компьютерных систем. Он очень гибкий и надежный, что делает его несколько громоздким в настройке, но подходящим для резервного копирования во многих ситуациях. Система резервного копирования является важным компонентом большинства серверных инфраструктур, поскольку восстановление после потери данных часто является важной частью планов аварийного восстановления.

В этом руководстве мы покажем вам, как установить и настроить серверные компоненты Bacula на сервере Ubuntu 14.04. Мы настроим Bacula для выполнения еженедельного задания по созданию локальной резервной копии (т. е. резервной копии собственного хоста). Это само по себе не особенно привлекательное использование Bacula, но оно предоставит вам хорошую отправную точку для создания резервных копий других ваших серверов, то есть клиентов резервного копирования. В следующем руководстве из этой серии будет рассказано о создании резервных копий других удаленных серверов путем установки и настройки клиента Bacula, а также настройки сервера Bacula.

Если вы предпочитаете вместо этого использовать CentOS 7, перейдите по этой ссылке: Как установить Bacula Server на CentOS 7.

Предпосылки

У вас должен быть доступ суперпользователя (sudo) на сервере Ubuntu 14.04. Кроме того, серверу потребуется достаточно места на диске для всех резервных копий, которые вы планируете хранить в любой момент времени.

Если вы используете DigitalOcean, вам следует включить частную сеть на вашем сервере Bacula и на всех ваших клиентских серверах, которые находятся в одном регионе центра обработки данных. Это позволит вашим серверам использовать частную сеть при резервном копировании, что снизит нагрузку на сеть.

Мы настроим Bacula для использования частного полного доменного имени наших серверов, например. bacula.private.example.com. Если у вас нет настройки DNS, вместо этого используйте соответствующие IP-адреса. Если у вас не включена частная сеть, замените всю информацию о сетевых подключениях в этом руководстве сетевыми адресами, доступными для рассматриваемых серверов (например, общедоступные IP-адреса или VPN-туннели).

Давайте начнем с обзора компонентов Bacula.

Обзор компонентов Bacula

Хотя Bacula состоит из нескольких программных компонентов, она следует модели резервного копирования сервер-клиент; чтобы упростить обсуждение, мы сосредоточимся больше на сервере резервного копирования и клиентах резервного копирования, чем на отдельных компонентах Bacula. Тем не менее, важно иметь поверхностное представление о различных компонентах Bacula, поэтому мы рассмотрим их сейчас.

Сервер Bacula, который мы также будем называть «резервным сервером», состоит из следующих компонентов:

  • Bacula Director (DIR): программное обеспечение, управляющее операциями резервного копирования и восстановления, выполняемыми демонами File and Storage.
  • Storage Daemon (SD): программное обеспечение, которое выполняет чтение и запись на устройствах хранения, используемых для резервного копирования.
  • Каталог: службы, поддерживающие базу данных резервных копий файлов. База данных хранится в базе данных SQL, например MySQL или PostgreSQL.
  • Консоль Bacula: интерфейс командной строки, который позволяет администратору резервного копирования взаимодействовать с Bacula Director и управлять им.

Note: The Bacula server components don't need to run on the same server, but they all work together to provide the backup server functionality.

Клиент Bacula, то есть сервер, для которого будет выполняться резервное копирование, запускает компонент File Daemon (FD). Файловый демон — это программное обеспечение, которое предоставляет серверу Bacula (в частности, директору) доступ к данным, для которых будет выполняться резервное копирование. Мы также будем называть эти серверы «клиентами резервного копирования» или «клиентами».

Как мы отмечали во введении, мы настроим сервер резервного копирования для создания резервной копии собственной файловой системы. Это означает, что сервер резервного копирования также будет клиентом резервного копирования и будет запускать компонент File Daemon.

Приступим к установке.

Установить MySQL

Bacula использует базу данных SQL, такую как MySQL или PostreSQL, для управления своим каталогом резервных копий. В этом руководстве мы будем использовать MySQL.

Сначала обновите apt-get:

  1. sudo apt-get update

Теперь установите MySQL Server с помощью apt-get:

  1. sudo apt-get install mysql-server

Вам будет предложено ввести пароль администратора базы данных MySQL, root. Введите пароль, затем подтвердите его.

Запомните этот пароль, так как он будет использоваться в процессе установки Bacula.

Установить Бакулу

Установите сервер Bacula и клиентские компоненты, используя apt-get:

  1. sudo apt-get install bacula-server bacula-client

Вам будет предложено ввести некоторую информацию, которая будет использоваться для настройки Postfix, который использует Bacula:

  • Общий тип почтовой конфигурации: выберите \Интернет-сайт
  • Имя системной почты: введите полное доменное имя или имя хоста вашего сервера.

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

  • Настроить базу данных для bacula-director-mysql с помощью dbconfig-common?: выберите «Да»
  • Пароль пользователя-администратора базы данных: введите пароль root для MySQL (устанавливается во время установки MySQL)
  • Пароль приложения MySQL для bacula-director-mysql: введите новый пароль и подтвердите его или оставьте поле пустым, чтобы сгенерировать случайный пароль

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

  1. sudo chmod 755 /etc/bacula/scripts/delete_catalog_backup

Теперь компоненты сервера (и клиента) Bacula установлены. Давайте создадим каталоги резервного копирования и восстановления.

Создание резервных копий и каталогов восстановления

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

Давайте создадим новые каталоги для обеих этих целей:

  1. sudo mkdir -p /bacula/backup /bacula/restore

Нам нужно изменить права доступа к файлам, чтобы только процесс bacula (и суперпользователь) мог получить доступ к этим местам:

  1. sudo chown -R bacula:bacula /bacula
  2. sudo chmod -R 700 /bacula

Теперь мы готовы настроить Bacula Director.

Настройка директора Bacula

Bacula имеет несколько компонентов, которые необходимо настроить независимо друг от друга для правильной работы. Все файлы конфигурации можно найти в каталоге /etc/bacula.

Начнем с Bacula Director.

Откройте файл конфигурации Bacula Director в вашем любимом текстовом редакторе. Мы будем использовать vi:

  1. sudo vi /etc/bacula/bacula-dir.conf

Настройка локальных заданий

Задание Bacula используется для выполнения действий по резервному копированию и восстановлению. Ресурсы заданий определяют детали того, что будет выполнять конкретное задание, включая, среди прочего, имя клиента, набор файлов для резервного копирования или восстановления.

Здесь мы настроим задания, которые будут использоваться для резервного копирования локальной файловой системы.

В конфигурации Director найдите ресурс Job с именем \BackupClient1 (ищите \BackupClient1). Измените значение Name на \BackupLocalFiles, чтобы оно выглядело так:

Job {
  Name = "BackupLocalFiles"
  JobDefs = "DefaultJob"
}

Затем найдите ресурс Job с именем \RestoreFiles (ищите \RestoreFiles). В этом задании вы хотите изменить две вещи: обновить значение Name на \RestoreLocalFiles и значение Where на \/bacula/restore. Это должно выглядеть так:

Job {
  Name = "RestoreLocalFiles"
  Type = Restore
  Client=BackupServer-fd
  FileSet="Full Set"
  Storage = File
  Pool = Default
  Messages = Standard
  Where = /bacula/restore
}

Это настраивает задание RestoreLocalFiles для восстановления файлов в /bacula/restore, каталог, который мы создали ранее.

Настроить набор файлов

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

Найдите ресурс FileSet с именем «Полный набор» (он находится под комментарием «# Список файлов для резервного копирования»). Здесь мы внесем три изменения: (1) добавим возможность использовать gzip для сжатия наших резервных копий, (2) изменим включаемый файл с /usr/sbin на /, и (3) изменить второй файл исключения на /bacula. После удаления комментариев это должно выглядеть так:

FileSet {
  Name = "Full Set"
  Include {
    Options {
      signature = MD5
      compression = GZIP
    }    
File = /
}
  Exclude {
    File = /var/lib/bacula
    File = /bacula
    File = /proc
    File = /tmp
    File = /.journal
    File = /.fsck
  }
}

Давайте рассмотрим изменения, которые мы внесли в набор файлов «Полный набор». Во-первых, мы включили сжатие gzip при создании резервного архива. Во-вторых, мы включили /, т. е. корневой раздел, который В-третьих, мы исключаем /bacula, потому что не хотим создавать избыточные резервные копии наших резервных копий и восстановленных файлов Bacula.

Note: If you have partitions that are mounted within /, and you want to include those in the FileSet, you will need to include additional File records for each of them.

Имейте в виду, что если вы всегда используете широкие наборы файлов, такие как «Полный набор», в своих заданиях резервного копирования, для ваших резервных копий потребуется больше места на диске, чем если бы ваши резервные копии были более конкретными. Например, набор файлов, который включает только вашу настроенную конфигурацию файлов и баз данных может быть достаточно для ваших нужд, если у вас есть четкий план восстановления, подробно описывающий установку необходимых пакетов программного обеспечения и размещение восстановленных файлов в нужных местах, при этом используя только часть дискового пространства для архивов резервных копий.

Настройка подключения демона хранилища

В файле конфигурации Bacula Director ресурс Storage определяет Storage Daemon, к которому должен подключаться Director. Через мгновение мы настроим самого Storage Daemon.

Найдите ресурс Storage и замените значение адреса localhost частным полным доменным именем (или частным IP-адресом) вашего сервера резервного копирования. Должно получиться так (замените выделенное слово):

Storage {
  Name = File
# Do not use "localhost" here
  Address = backup_server_private_FQDN                # N.B. Use a fully qualified name here
  SDPort = 9103
  Password = "ITXAsuVLi1LZaSfihQ6Q6yUCYMUssdmu_"
  Device = FileStorage
  Media Type = File
}

Это необходимо, потому что мы собираемся настроить Storage Daemon для прослушивания интерфейса частной сети, чтобы к нему могли подключаться удаленные клиенты.

Настроить пул

Ресурс пула определяет набор хранилищ, используемых Bacula для записи резервных копий. Мы будем использовать файлы в качестве томов для хранения и просто обновим метку, чтобы наши локальные резервные копии были правильно помечены.

Найдите ресурс пула с именем \Файл (он находится под комментарием \# определение пула файлов) и добавьте строку, указывающую формат метки. Когда вы закончите, это должно выглядеть так:

# File Pool definition
Pool {
  Name = File
  Pool Type = Backup
  Label Format = Local-
  Recycle = yes                       # Bacula can automatically recycle Volumes
  AutoPrune = yes                     # Prune expired volumes
  Volume Retention = 365 days         # one year
  Maximum Volume Bytes = 50G          # Limit Volume size to something reasonable
  Maximum Volumes = 100               # Limit number of Volumes in Pool
}

Сохранить и выйти. Наконец-то вы закончили настройку Bacula Director.

Проверьте конфигурацию директора:

Давайте проверим, что в вашем файле конфигурации Director нет синтаксических ошибок:

  1. sudo bacula-dir -tc /etc/bacula/bacula-dir.conf

Если сообщений об ошибках нет, ваш файл bacula-dir.conf не содержит синтаксических ошибок.

Далее мы настроим Storage Daemon.

Настройка демона хранилища

Наш сервер Bacula почти настроен, но нам еще нужно настроить Storage Daemon, чтобы Bacula знала, где хранить резервные копии.

Откройте конфигурацию SD в вашем любимом текстовом редакторе. Мы будем использовать vi:

  1. sudo vi /etc/bacula/bacula-sd.conf

Настроить ресурс хранилища

Найдите ресурс хранилища. Это определяет, где процесс SD будет прослушивать соединения. Добавьте параметр SDAddress и назначьте его частному полному доменному имени (или частному IP-адресу) вашего сервера резервного копирования:

Storage {                             # definition of myself
  Name = BackupServer-sd
  SDPort = 9103                  # Director's port
  WorkingDirectory = "/var/lib/bacula"
  Pid Directory = "/var/run/bacula"
  Maximum Concurrent Jobs = 20
  SDAddress = backup_server_private_FQDN
}

Настройка устройства хранения

Затем найдите ресурс устройства с именем \FileStorage (ищите \FileStorage) и обновите значение Archive Device, чтобы оно соответствовало каталогу резервных копий:

Device {
  Name = FileStorage
  Media Type = File
  Archive Device = /bacula/backup 
  LabelMedia = yes;                   # lets Bacula label unlabeled media
  Random Access = Yes;
  AutomaticMount = yes;               # when device opened, read it
  RemovableMedia = no;
  AlwaysOpen = no;
}

Сохранить и выйти.

Проверка конфигурации демона хранилища

Давайте проверим, что в вашем файле конфигурации Storage Daemon нет синтаксических ошибок:

  1. sudo bacula-sd -tc /etc/bacula/bacula-sd.conf

Если сообщений об ошибках нет, ваш файл bacula-sd.conf не содержит синтаксических ошибок.

Мы завершили настройку Bacula. Мы готовы перезапустить компоненты сервера Bacula.

Перезапустите Bacula Director и Storage Daemon.

Чтобы изменения конфигурации вступили в силу, перезапустите Bacula Director и Storage Daemon с помощью следующих команд:

  1. sudo service bacula-director restart
  2. sudo service bacula-sd restart

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

Тестовое задание резервного копирования

Мы будем использовать консоль Bacula для запуска нашего первого задания резервного копирования. Если он работает без проблем, мы будем знать, что Bacula настроен правильно.

Теперь войдите в консоль с помощью этой команды:

  1. sudo bconsole

Это приведет вас к приглашению консоли Bacula, обозначенному приглашением *.

Создать ярлык

Начните с ввода команды label:

  1. label

Вам будет предложено ввести имя тома. Введите любое имя, которое вы хотите:

Enter new Volume name:
MyVolume

Затем выберите пул, который следует использовать для резервного копирования. Мы будем использовать пул «Файл», который мы настроили ранее, введя «2»:

Select the Pool (1-3):
2

Запуск задания резервного копирования вручную

Теперь Bacula знает, как мы хотим записать данные для нашей резервной копии. Теперь мы можем запустить нашу резервную копию, чтобы проверить, правильно ли она работает:

  1. run

Вам будет предложено выбрать задание для запуска. Мы хотим запустить задание «BackupLocalFiles», поэтому введите «1» в командной строке:

Select Job resource (1-3):
1

В запросе подтверждения «Выполнить задание резервного копирования» проверьте детали, затем введите «да», чтобы запустить задание:

  1. yes

Проверить сообщения и статус

После запуска задания Bacula сообщит вам, что у вас есть сообщения. Сообщения выводятся при выполнении заданий.

Проверьте сообщения, набрав:

  1. messages

В сообщениях должно быть указано «Не найдена запись предыдущего задания полного резервного копирования» и что задание резервного копирования запущено. Если есть какие-либо ошибки, значит что-то не так, и они должны дать вам подсказку, почему задание не запустилось.

Еще один способ увидеть статус задания — проверить статус директора. Для этого введите эту команду в командной строке bconsole:

  1. status director

Если все работает правильно, вы должны увидеть, что ваша работа выполняется. Что-то вроде этого:

Output — status director (Running Jobs)
Running Jobs: Console connected at 09-Apr-15 12:16 JobId Level Name Status ====================================================================== 3 Full BackupLocalFiles.2015-04-09_12.31.41_06 is running ====

Когда ваша работа будет завершена, она переместится в раздел «Завершенные работы» отчета о состоянии, например:

Output — status director (Terminated Jobs)
Terminated Jobs: JobId Level Files Bytes Status Finished Name ==================================================================== 3 Full 161,124 877.5 M OK 09-Apr-15 12:34 BackupLocalFiles

Статус «ОК» означает, что задание резервного копирования прошло без проблем. Поздравляем! У вас есть резервная копия «Полного набора» вашего сервера Bacula.

Следующим шагом является проверка задания восстановления.

Тестовое задание восстановления

Теперь, когда резервная копия создана, важно убедиться, что ее можно правильно восстановить. Команда restore позволит нам восстановить файлы, для которых были созданы резервные копии.

Выполнить восстановление всего задания

Чтобы продемонстрировать, мы восстановим все файлы из нашей последней резервной копии:

  1. restore all

Появится меню выбора с множеством различных опций, которые используются для определения, из какого набора резервных копий следует восстанавливаться. Поскольку у нас есть только одна резервная копия, давайте «Выберем самую последнюю резервную копию» — выберите вариант 5:

Select item (1-13):
5

Поскольку есть только один клиент, сервер Bacula, он будет выбран автоматически.

Следующее приглашение спросит, какой набор файлов вы хотите использовать. Выберите «Полный набор», которых должно быть 2:

Select FileSet resource (1-2):
2

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

Поскольку мы указали, что хотим «восстановить все», каждый резервный файл уже помечен для восстановления. Помеченные файлы обозначаются начальным символом *.

Если вы хотите уточнить свой выбор, вы можете перемещаться по файлам и перечислять их с помощью команд \ls и \cd, помечать файлы для восстановления с помощью \mark и снимать пометки с файлов с помощью \unmark. Полный список команд доступен при вводе \help в консоли.

Когда вы закончите выбор восстановления, введите:

  1. done

Подтвердите, что вы хотите запустить задание восстановления:

OK to run? (yes/mod/no):
yes

Проверить сообщения и статус

Как и в случае с заданиями резервного копирования, вы должны проверять сообщения и статус Director после запуска задания восстановления.

Проверьте сообщения, набрав:

  1. messages

Должно быть сообщение о том, что задание восстановления запущено или было прекращено со статусом «Восстановление в порядке». Если есть какие-либо ошибки, что-то не так, и они должны дать вам подсказку, почему задание не запустилось.

Опять же, проверка статуса директора — отличный способ увидеть состояние задания восстановления:

  1. status director

Когда вы закончите восстановление, введите exit, чтобы выйти из консоли Bacula:

  1. exit

Подтвердить восстановление

Чтобы убедиться, что задание восстановления действительно восстановило выбранные файлы, вы можете посмотреть в каталоге /bacula/restore (который был определен в задании \RestoreLocalFiles в конфигурации Director):

  1. sudo ls -la /bacula/restore

Вы должны увидеть восстановленные копии файлов в вашей корневой файловой системе, за исключением файлов и каталогов, перечисленных в разделе \Исключить задания \RestoreLocalFiles. Если вы пытались восстановить данные после потери, вы можете скопировать восстановленные файлы в соответствующие места.

Удалить восстановленные файлы

Вы можете удалить восстановленные файлы, чтобы освободить место на диске. Для этого используйте эту команду:

  1. sudo -u root bash -c "rm -rf /bacula/restore/*"

Обратите внимание, что вы должны запускать эту команду rm от имени пользователя root, так как многие из восстановленных файлов принадлежат пользователю root.

Заключение

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

В следующем руководстве показано, как добавить другие удаленные серверы в качестве клиентов Bacula: Как создать резервную копию сервера Ubuntu 14.04 с помощью Bacula.