Резервное копирование сервера Ubuntu 14.04 с помощью Bacula

Данное руководство научит создавать резервные копии удаленного хоста Ubuntu 14.04 с помощью Bacula. Вы узнаете, как установить Bacula Client на удаленный хост и откорректировать настройки существующего хоста Bacula Server.

Читайте также: Резервное копирование сервера CentOS 7 с помощью Bacula

Требования

  • Компоненты Bacula Server, установленные согласно этому руководству.
  • Частная сеть для взаимодействия клиента и сервера Bacula.
  • FQDN серверов должен указывать на внутренний IP-адрес. Если у вас нет соответствующих настроек DNS, вместо этого можно использовать IP-адреса серверов.
  • В руководстве используются условные данные: сервер Bacula будет называться BaculaServer, или сервер бэкапа; удаленные хосты называются ClientHost, или клиенты бэкапа.

Настройка Bacula Director

Перейдите на BaculaServer.

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

Создайте каталог для конфигурационных файлов Bacula:

sudo mkdir /etc/bacula/conf.d

Откройте конфигурационный файл Bacula Director:

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

В конец файла вставьте строку:

@|"find /etc/bacula/conf.d -name '*.conf' -type f -exec echo @{} \;"

Сохраните и закройте файл. Теперь Director сможет искать дополнительные настройки в других файлах каталога /etc/bacula/conf.d. Любой файл с расширением .conf будет восприниматься как часть конфигурации.

Пул RemoteFile

Добавьте в настройку Bacula Director новый пул для резервного копирования удаленных серверов.

Откройте conf.d/pools.conf:

sudo vi /etc/bacula/conf.d/pools.conf

Добавьте ресурс Pool:

Pool {
Name = RemoteFile
Pool Type = Backup
Label Format = Remote-
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
}

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

Пока что перезапускать Bacula Director не нужно. Просто убедитесь, что в файле нет ошибок.

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

Установка и настройка Bacula Client

Примечание: Этот раздел нужно выполнить на всех клиентах бэкапа.

Обновите индекс пакетов.

sudo apt-get update

Установите пакет bacula-client.

sudo apt-get install bacula-client

Это установит File Daemon (FD).

Настройка клиента

Перед настройкой File Daemon нужно иметь в виду следующую условную информацию, которая будет использоваться в течение оставшейся части этого руководства:

  • Имя хоста клиента: ClientHost.
  • FQDN клиента: client_private_FQDN (в формате clienthost.private.example.com).
  • Имя сервера Bacula: BackupServer

Эти условные данные нужно заменять своими данными.

Откройте конфигурационный файл File Daemon:

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

В нем нужно изменить несколько элементов и найти информацию, которая понадобится для дальнейшей конфигурации сервера.

Найдите ресурс Director с именем вашего клиентского хоста (например, ClientHost-dir). Измените значение параметра Name и укажите в нем имя хоста сервера бэкапа с суффиксом –dir. Например:

Director {
Name = BackupServer-dir
Password = "IrIK4BHRA2o5JUvw2C_YNmBX_70oqfaUi"
}

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

Затем нам нужно откорректировать один параметр в ресурсе FileDaemon. Измените параметр FDAddress, укажите в нем FQDN клиентской машины. Параметр Name уже должен содержать правильное имя демона FD клиента. Ресурс должен выглядеть примерно так (замените условные данные):

FileDaemon {                          # this is me
Name = ClientHost-fd
FDport = 9102                  # where we listen for the director
WorkingDirectory = /var/lib/bacula
Pid Directory = /var/run/bacula
Maximum Concurrent Jobs = 20
FDAddress = client_private_FQDN
}

Также необходимо настроить демон для передачи сообщений логов на сервер резервного копирования. Найдите ресурс Messages и измените параметр director; укажите в нем имя хоста сервера бэкапа с суффиксом -dir. Ресурс должен выглядеть примерно так:

Messages {
Name = Standard
director =  BackupServer-dir = all, !skipped, !restored
}

Сохраните и закройте файл. Клиент и File Daemon настроены.

Проверьте ошибки в файле:

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

Если команда не сообщила вам об ошибках, значит, в файле их нет.

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

sudo service bacula-fd restart

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

sudo mkdir -p /bacula/restore
sudo chown -R bacula:bacula /bacula
sudo chmod -R 700 /bacula

Добавление наборов файлов (FileSet)

Примечание: Данный раздел нужно выполнить на сервере.

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

Если вы выполнили руководство по установке Bacula Server, у вас уже есть FileSet по имени Full Set. Если вы хотите, чтобы система Bacula копировала почти все файлы системы, можете использовать этот FileSet в задачах. Но обычно для восстановления не нужно иметь бэкап всех файлов, потому этот набор желательно сократить, чтобы сэкономить дисковое пространство.

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

Попробуйте создать новые ресурсы FileSet.

На сервере Bacula откройте файл filesets.conf в конфигурационном каталоге Bacula Director:

sudo vi /etc/bacula/conf.d/filesets.conf

Создайте ресурс FileSet для каждого конкретного набора файлов, который вы хотите использовать в задачах резервного копирования. В этом примере показано, как создать FileSet, который включает только домашний каталог м каталог etc:

FileSet {
Name = "Home and Etc"
Include {
Options {
signature = MD5
compression = GZIP
}
File = /home
File = /etc
}
Exclude {
File = /home/bacula/not_important
}
}

Запомните:

  • Имя FileSet должно быть уникальным.
  • В FileSet нужно указать все файлы или разделы, бэкап которых нужно выполнить.
  • Чем меньше в FileSet лишних и ненужных файлов, тем продуктивнее резервное копирование.
  • Количество FileSet не ограничено.

Добавление задач Client и Backup на сервер Bacula

Чтобы добавить клиентский хост в настройки сервера Bacula, создайте в настройках Bacula Director новые ресурсы – Client и Job.

Откройте conf.d/clients.conf :

sudo vi /etc/bacula/conf.d/clients.conf

Добавление ресурса Client

Ресурс Client предоставляет Director информацию, необходимую ему для подключения к хосту клиента. Сюда входят имя, адрес и пароль File Daemon клиента.

Вставьте в файл этот ресурс Client.

Client {
Name = ClientHost-fd
Address = client_private_FQDN
FDPort = 9102
Catalog = MyCatalog
Password = "IrIK4BHRA2o5JUvw2C_YNmBX_70oqfaUi"          # password for Remote FileDaemon
File Retention = 30 days            # 30 days
Job Retention = 6 months            # six months
AutoPrune = yes                     # Prune expired Jobs/Files
}

Примечание: Замените условные данные.

Создание задачи Backup

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

Вставьте задачу в файл conf.d/clients.conf.

Job {
Name = "BackupClientHost"
JobDefs = "DefaultJob"
Client = ClientHost-fd
Pool = RemoteFile
FileSet="Home and Etc"
}

Это создаст задачу резервного копирования под названием BackupClientHost, которая будет поддерживать резервные копии домашнего каталога и каталога etc хоста клиента, как определено в FileSet под названием Home and Etc. Задача будет использовать настройки, указанные в ресурсе JobDefs по имени DefaultJob и в RemoteFile по имени DefaultJob, которые определены в основном файле bacula-dir.conf. По умолчанию задачи с параметром JobDefs = «DefaultJob» будут выполняться еженедельно.

Сохраните и закройте файл.

Проверка настроек Bacula Director

Убедитесь, что в файле Bacula Director нет ошибок:

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

Если команда не вывела сообщений об ошибках, значит, все параметры записаны правильно.

Перезапуск Bacula Director

Чтобы обновить настройки, перезапустите Bacula Director.

sudo service bacula-director restart

Теперь сервер Bacula сможет создавать резервные копии удаленного хоста.

Тестирование подключения клиента

Теперь нужно убедиться, что Bacula Director может подключиться к клиенту Bacula.

На сервере Bacula откройте консоль Bacula:

sudo bconsole
status client
Select Client resource: ClientHost-fd
The defined Client resources are:
1: BackupServer-fd
2: ClientHost-fd
Select Client (File daemon) resource (1-2): 2

Команда должна сразу отобразить состояние File Daemon клиента. Если этого не произошло и возникла ошибка, проверьте настройки клиента и сервера Bacula.

Запуск тестовой задачи

Запустите задачу на сервере Bacula.

run

Команда предложит выбрать задачу, которую нужно запустить. Выберите одну из задач, например 4.

Select Job resource: BackupClientHost
The defined Job resources are:
1: BackupLocalFiles
2: BackupCatalog
3: RestoreLocalFiles
4: BackupClientHost
Select Job resource (1-4): 4
Подтвердите выбор:
Confirmation prompt:
OK to run? (yes/mod/no): yes

Проверка сообщений и состояния

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

Чтобы проверить сообщения, введите:

messages

В сообщениях должно быть указано «No prior Full backup Job record found» и что задача резервного копирования запустилась. Если при запуске задачи что-то пошло не так, в сообщениях вы найдете подсказки по устранению неполадок.

Также вы можете узнать состояние задачи. Для этого нужно запросить состояние Director. Введите в bconsole:

status director

Состояние OK значит, что задача выполнена успешно.

Восстановление данных

Создав резервную копию, важно проверить ее восстановление. Команда restore позволяет восстанавливать скопированные файлы.

Введите в Bacula Console:

restore all

На экране появится меню, в котором можно выбрать резервный набор, который необходимо восстановить. Поскольку у вас есть только одна резервная копия, выберите вариант 5, «Select the most recent backup»:

Select item (1-13):
5

Затем будет предложено выбрать клиента. Выберите удаленный хост ClientHost-fd.

Select the Client: ClientHost-fd
Defined Clients:
1: BackupServer-fd
2: ClientHost-fd
Select the Client (1-2): 2

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

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

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

Чтобы получить полный список команд, введите help.

Выбрав все необходимые файлы, введите:

done

Подтвердите выбор:

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

Проверка сообщений и состояния

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

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

messages

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

Проверьте состояние Director:

status director

Чтобы закрыть Bacula Console, введите:

exit

Если восстановление прошло правильно, вы найдете файлы в каталоге /bacula/restore на клиенте. После тестирования восстановленные файлы можно удалить.

Заключение

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

Читайте также

Tags: ,