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

Вступление

Bacula - это решение для сетевого резервного копирования с открытым исходным кодом, которое позволяет создавать резервные копии и выполнять восстановление данных ваших компьютерных систем. Он очень гибкий и надежный, что делает его немного сложным в настройке, подходящим для резервного копирования во многих ситуациях. Система резервного копирования - этоimportant component in most server infrastructures, поскольку восстановление после потери данных часто является важной частью планов аварийного восстановления.

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

Если вы предпочитаете использовать CentOS 7, перейдите по этой ссылке:How To Install Bacula Server on CentOS 7.

Предпосылки

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

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

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

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

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

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

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

  • Bacula Director (DIR): Программное обеспечение, управляющее операциями резервного копирования и восстановления, выполняемыми демонами файлов и хранилищ.

  • Storage Daemon (SD): Программное обеспечение, выполняющее чтение и запись на устройствах хранения, используемых для резервного копирования

  • Catalog: Службы, поддерживающие базу данных файлов, для которых выполняется резервное копирование. База данных хранится в базе данных SQL, такой как MySQL или PostgreSQL

  • Bacula Console: Интерфейс командной строки, который позволяет администратору резервного копирования взаимодействовать с 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.

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

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

Давайте начнем с установки.

Установите MySQL

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

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

sudo apt-get update

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

sudo apt-get install mysql-server

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

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

Установить Bacula

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

sudo apt-get install bacula-server bacula-client

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

  • General Type of Mail Configuration: Выберите «Интернет-сайт»

  • System Mail Name: Введите полное доменное имя или имя хоста вашего сервера.

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

  • Configure database for bacula-director-mysql with dbconfig-common?: Выберите «Да»

  • Password of the database’s administrative user: Введите пароль root для MySQL (задается при установке MySQL)

  • MySQL application password for bacula-director-mysql: введите новый пароль и подтвердите его или оставьте запрос пустым, чтобы сгенерировать случайный пароль.

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

sudo chmod 755 /etc/bacula/scripts/delete_catalog_backup

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

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

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

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

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

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

sudo chown -R bacula:bacula /bacula
sudo chmod -R 700 /bacula

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

Настроить Bacula Director

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

Начнем с директора Bacula.

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

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

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

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

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

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

bacula-dir.conf — Rename BackupClient1 job

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

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

bacula-dir.conf — Rename RestoreFiles job

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 определяет набор файлов или каталогов для файловinclude илиexclude из выбранной резервной копии и используется заданиями.

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

bacula-dir.conf — Update “Full Set” FileSet

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.

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

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

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

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

bacula-dir.conf — Update Storage Address

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
}

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

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

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

Найдите ресурс «Файл» с именем «Файл» (он находится под комментарием «# Определение пула файлов») и добавьте строку, в которой указан формат метки. Это должно выглядеть так, когда вы закончите:

bacula-dir.conf — Update Pool:

# 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 нет синтаксических ошибок:

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

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

Далее мы настроим демона хранилища.

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

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

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

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

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

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

bacula-sd.conf — update SDAddress

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, чтобы оно соответствовало вашему каталогу резервных копий:

bacula-sd.conf — update 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 нет синтаксических ошибок:

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

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

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

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

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

sudo service bacula-director restart
sudo service bacula-sd restart

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

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

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

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

sudo bconsole

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

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

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

label

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

Enter new Volume name:MyVolume

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

Select the Pool (1-3):2

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

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

run

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

Select Job resource (1-3):1

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

yes

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

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

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

messages

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

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

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 позволит нам восстановить файлы, для которых были созданы резервные копии.

Запустить Restore All Job

Для демонстрации мы восстановим все файлы в нашей последней резервной копии:

restore all

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

Select item (1-13):5

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

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

Select FileSet resource (1-2):2

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

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

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

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

done

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

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

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

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

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

messages

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

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

status director

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

exit

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

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

sudo ls -la /bacula/restore

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

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

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

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

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

Заключение

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

В следующем руководстве показано, как добавить другие удаленные серверы в качестве клиентов Bacula:How To Back Up an Ubuntu 14.04 Server with Bacula.

Related