УСТАНОВКА И НАСТРОЙКА BACULA centos

Thank you for reading this post, don't forget to subscribe!

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

Дан­ное руко­вод­ство научит уста­нав­ли­вать и настра­и­вать сер­вер­ные ком­по­нен­ты Bacula на сер­ве­ре CentOS 7. Здесь вы узна­е­те, как с помо­щью Bacula созда­вать локаль­ные резерв­ные копии (т. е. резерв­ные копии хоста, на кото­ром уста­нов­ле­на систе­ма Bacula).

Компоненты Bacula

Bacula состо­ит из несколь­ких про­грамм­ных ком­по­нен­тов и осно­вы­ва­ет­ся на моде­ли «сер­вер-кли­ент». Рас­смот­рим ком­по­нен­ты Bacula подробнее.

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

При­ме­ча­ние: Ком­по­нен­ты сер­ве­ра Bacula не обя­за­тель­но запус­кать на одном сервере.

Кли­ент Bacula (сер­вер, дан­ные кото­ро­го будут копи­ро­вать­ся) запус­ка­ет File Daemon (FD). Это про­грамм­ное обес­пе­че­ние, кото­рое предо­став­ля­ет сер­ве­ру Bacula (в част­но­сти, Bacula Director) доступ к дан­ным, кото­рые нуж­но ско­пи­ро­вать. Такие сер­ве­ры назы­ва­ют­ся кли­ен­та­ми бэка­па, или про­сто клиентами.

Установка MySQL и Bacula

Для хра­не­ния ката­ло­га дан­ных Bacula исполь­зу­ет БД SQL, такие как MySQL или PostreSQL. В этом руко­вод­стве пред­ла­га­ем уста­но­вить MariaDB, форк про­ек­та MySQL. Что­бы уста­но­вить Bacula и MariaDB Server, введите:

sudo yum install -y bacula-director bacula-storage bacula-console bacula-client mariadb-server

Запу­сти­те MariaDB:

sudo systemctl start mariadb

После это­го нуж­но создать поль­зо­ва­те­ля БД и таб­ли­цы. Для это­го запу­сти­те сценарии:

/usr/libexec/bacula/grant_mysql_privileges
/usr/libexec/bacula/create_mysql_database -u root
/usr/libexec/bacula/make_mysql_tables -u bacula

Затем нуж­но запу­стить про­стой сце­на­рий, кото­рый уда­лит неко­то­рые опас­ные настрой­ки по умол­ча­нию и забло­ки­ру­ет доступ к систе­ме баз дан­ных. Запу­сти­те интер­ак­тив­ный сценарий:

sudo mysql_secure_installation

Про­грам­ма запро­сит root-пароль. Посколь­ку вы толь­ко уста­но­ви­ли MySQL, ско­рее все­го, тако­го паро­ля нет. Про­сто нажми­те Enter, что­бы про­пу­стить поле. После это­го будет пред­ло­же­но выбрать такой пароль. Нажми­те Enter и выбе­ри­те root-пароль. Что­бы при­нять зна­че­ния по умол­ча­нию в осталь­ных запро­сах, про­сто нажми­те Enter.

Это уда­лит образ­цы баз дан­ных и поль­зо­ва­те­лей, отклю­чит уда­лен­ный доступ root и сра­зу обно­вит настрой­ки MySQL.

Теперь нуж­но выбрать пароль для поль­зо­ва­те­ля БД Bacula.

Открой­те кон­соль MySQL как root.

mysql -u root -p

Вве­ди­те root-пароль MySQL.

Теперь уста­но­ви­те пароль поль­зо­ва­те­ля Bacula (вме­сто bacula_db_password ука­жи­те свой пароль).

Закрой­те команд­ную стро­ку MySQL.

exit

Добавь­те MariaDB в автозагрузку.

sudo systemctl enable mariadb

Настройка Bacula для использования MySQL

По умол­ча­нию Bacula исполь­зу­ет биб­лио­те­ку PostgreSQL. Это нуж­но изменить.

Запу­сти­те команду:

sudo alternatives --config libbaccats.so

Вы уви­ди­те сле­ду­ю­щее меню. Что­бы выбрать MySQL, вве­ди­те 1.

Теперь сер­вер­ные и кли­ент­ские ком­по­нен­ты 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 состо­ит из несколь­ких ком­по­нен­тов, каж­дый из кото­рых тре­бу­ет инди­ви­ду­аль­ной настрой­ки. Все кон­фи­гу­ра­ци­он­ные фай­лы хра­нят­ся в ката­ло­ге /etc/bacula.

Для нача­ла настрой­те Bacula Director.

Открой­те кон­фи­гу­ра­ци­он­ный файл компонента:

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

Настройка ресурса Director

Най­ди­те ресурс Director и настрой­те его для про­слу­ши­ва­ния 127.0.0.1 (localhost). Для это­го добавь­те в раз­дел стро­ку DirAddress.

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

Зада­чи Bacula (job) выпол­ня­ют резерв­ное копи­ро­ва­ние и вос­ста­нов­ле­ние дан­ных. Ресур­сы зада­ния – это подроб­ные дан­ные о том или ином зада­нии: имя кли­ен­та, фай­лы для бэка­па или вос­ста­нов­ле­ния (FileSet) и мно­гое другое.

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

Най­ди­те ресурс Job с име­нем BackupClient1. Заме­ни­те зна­че­ние в стро­ке Name име­нем BackupLocalFiles.

Затем най­ди­те ресурс Job с име­нем RestoreFiles. В стро­ке Name ука­жи­те имя RestoreLocalFiles, а в стро­ке Where – ката­лог /bacula/restore.

Теперь RestoreLocalFiles смо­жет хра­нить фай­лы в ката­ло­ге /bacula/restore.

Файлы для бэкапа

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

Най­ди­те ресурс FileSet по име­ни Full Set (под ком­мен­та­ри­ем # List of files to be backed up). Сюда нуж­но вне­сти сле­ду­ю­щие изменения:

  • Доба­вить сжа­тие gzip.
  • В раз­де­ле Include заме­нить /usr/sbin в стро­ке File на /.
  • В кон­це раз­де­ла Exclude доба­вить стро­ку File = /bacula.

Рас­смот­рим изме­не­ния в FileSet под назва­ни­ем Full Set. Во-пер­вых, при созда­нии резерв­но­го архи­ва будет исполь­зо­вать­ся сжа­тие gzip. Во-вто­рых, в резерв­ное копи­ро­ва­ние вклю­ча­ет­ся весь кор­не­вой раз­дел. В-тре­тьих, из резерв­но­го копи­ро­ва­ния исклю­ча­ет­ся ката­лог /bacula, пото­му что ина­че Bacula будет созда­вать резерв­ные копии ката­ло­га, в кото­ром хра­нят­ся резерв­ные копии.

При­ме­ча­ние: Если в / смон­ти­ро­ва­ны дру­гие раз­де­лы, кото­рые нуж­но вклю­чить в FileSet, создай­те в раз­де­ле Include допол­ни­тель­ные запи­си File для каж­до­го из них.

Имей­те в виду: резерв­ные копии широ­ких набо­ров FileSet (таких как Full Set) зани­ма­ют боль­ше места на дис­ке, чем резерв­ные копии более кон­крет­ных спис­ков фай­лов. Напри­мер, если у вас есть чет­кий план, вам может хва­тить набо­ра FileSet из поль­зо­ва­тель­ских кон­фи­гу­ра­ци­он­ных фай­лов и баз дан­ных. Это помо­жет сэко­но­мить дис­ко­вое пространство.

Настройка Storage Daemon

В кон­фи­гу­ра­ци­он­ном фай­ле Bacula Director есть ресурс Storage. Он опре­де­ля­ет рабо­ту Storage Daemon, к кото­ро­му под­клю­ча­ет­ся Director.

Най­ди­те ресурс Storage. В стро­ке Address заме­ни­те зна­че­ние localhost внут­рен­ним IP-адре­сом или FQDN.

Это важ­но, посколь­ку демон Storage Daemon будет про­слу­ши­вать интер­фейс част­ной сети, что­бы под­дер­жи­вать вза­и­мо­дей­ствие с уда­лен­ны­ми клиентами.

Настройка каталога

Ресурс Catalog опре­де­ля­ет БД, к кото­рой будет под­клю­чать­ся Director.

Най­ди­те ресурс Catalog по име­ни MyCatalog (под ком­мен­та­ри­ем Generic catalog service). Обно­ви­те зна­че­ние dbpassword и ука­жи­те пароль поль­зо­ва­те­ля MySQL bacula.

Теперь Bacula Director смо­жет под­клю­чить­ся к БД MySQL.

Настройка пула

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

Най­ди­те ресурс Pool по име­ни File (под ком­мен­та­ри­ем # File Pool definition). Добавь­те в него стро­ку Label Format.

Сохра­ни­те и закрой­те файл. Настрой­ка ком­по­нен­та Bacula Director завершена.

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

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

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

Если коман­да не вер­ну­ла сооб­ще­ний об ошиб­ках, зна­чит, bacula-dir.conf содер­жит пра­виль­ные настройки.

Настройка Storage Daemon

Сер­вер Bacula почти готов. Оста­лось толь­ко настро­ить Storage Daemon, что­бы систе­ма Bacula пони­ма­ла, где хра­нить файлы.

Открой­те кон­фи­гу­ра­ци­он­ный файл SD.

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

Настройка ресурса Storage

Най­ди­те в фай­ле ресурс Storage. Он опре­де­ля­ет, где про­цесс SD будет про­слу­ши­вать соеди­не­ния. Добавь­те пара­метр SDAddress и ука­жи­те в нем FQDN (или внут­рен­ний IP-адрес) сер­ве­ра бэкапа:

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

Затем най­ди­те ресурс Device по име­ни FileStorage и обно­ви­те зна­че­ние Archive Device, ука­зав в нем путь к ката­ло­гу backup:

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

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

Убе­ди­тесь, что в кон­фи­гу­ра­ци­он­ном фай­ле Storage Daemon нет ошибок.

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

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

Пароли компонетов Bacula

Director, SD и FD исполь­зу­ют паро­ли для меж­ком­по­нент­ной аутен­ти­фи­ка­ции. Эти паро­ли мож­но уста­но­вить вруч­ную, но вам эти паро­ли знать не нуж­но. Пото­му их мож­но сге­не­ри­ро­вать с помо­щью коман­ды и вста­вить в кон­фи­гу­ра­ци­он­ные фай­лы Bacula автоматически.

Сле­ду­ю­щие коман­ды сге­не­ри­ру­ют слу­чай­ный пароль для Director и вста­вят его в файл.

Этот набор команд сге­не­ри­ру­ет и уста­но­вит пароль для Storage Daemon. Director под­клю­ча­ет­ся к SD, пото­му ему тоже нужен пароль.

Эти коман­ды гене­ри­ру­ют и уста­нав­ли­ва­ют пароль File Daemon (кли­ент­ское про­грамм­ное обес­пе­че­ние Bacula). Director под­клю­ча­ет­ся к FD, поэто­му ему тоже нужен пароль.

Запуск компонентов Bacula

Запу­сти­те Bacula Director, Storage Daemon и локаль­ный File Daemon с помо­щью команд:

sudo systemctl start bacula-dir
sudo systemctl start bacula-sd
sudo systemctl start bacula-fd

После успеш­но­го запус­ка ком­по­нен­тов добавь­те их в автозагрузку.

sudo systemctl enable bacula-dir
sudo systemctl enable bacula-sd
sudo systemctl enable bacula-fd

Создание тестовой задачи

Для запус­ка пер­вой зада­чи мож­но исполь­зо­вать Bacula Console.

Что­бы открыть кон­соль, введите:

sudo bconsole

Вы попа­де­те в команд­ную стро­ку Bacula Console, кото­рая обо­зна­че­на символом *.

Создание метки

Вве­ди­те коман­ду label.

label

Коман­да запро­сит имя тома.

Enter new Volume name:
MyVolume

Затем выбе­ри­те пул для бэка­па. В дан­ном при­ме­ре исполь­зу­ет­ся пул File. Что­бы выбрать его, вве­ди­те 2.

Select the Pool (1-3):
2

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

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

run

Про­грам­ма пред­ло­жит выбрать зада­чу, кото­рую нуж­но запу­стить. Что­бы выбрать BackupLocalFiles, вве­ди­те 1.

Select Job resource (1-3):
1

Что­бы запу­стить зада­чу, на запрос Run Backup job нуж­но отве­тить yes.

yes

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

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

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

messages

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

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

status director

Если зада­ча выпол­ня­ет­ся успеш­но, вы уви­ди­те при­мер­но такой вывод:

Когда зада­ча будет завер­ше­на, в отче­те о состо­я­нии она перей­дет в раз­дел Terminated Jobs:

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

Теперь у вас есть резерв­ная копия Full Set, создан­ная с помо­щью Bacula.

Тестовое восстановление

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

Полное восстановление

Для при­ме­ра попро­буй­те вос­ста­но­вить все фай­лы послед­ней резерв­ной копии:

restore all

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

Select item (1-13):
5

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

Затем про­грам­ма пред­ло­жит выбрать FileSet. Что­бы выбрать Full Set, вве­ди­те 2.

Select FileSet resource (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:

sudo ls -la /bacula/restore

В нем долж­ны быть вос­ста­нов­лен­ные копии фай­лов. Что­бы вос­ста­но­вить утра­чен­ные дан­ные, може­те ско­пи­ро­вать вос­ста­нов­лен­ные фай­лы в соот­вет­ству­ю­щие каталоги.

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

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

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

Запу­сти­те эту коман­ду как root, так как мно­гие вос­ста­нов­лен­ные фай­лы при­над­ле­жат поль­зо­ва­те­лю root.