Автоматическая проверка бекапов, сделанных в бакуле

По мотивам Автоматическая проверка бекапов mysql, ldap можно пойти чуть дальше и начать автоматически проверять бекапы бакулы.

Файл, который необходимо "скормить" bconsole для выполнения бакулой необходимых команд:

cat /root/scripts/restore_check.bacula
restore client=host1 where=/bacula/bacula-restores restoreclient=bacula-host select current file=/etc/asterisk/extensions.conf done

Некоторые пояснения касательно файла restore_check.bacula:

http://www.bacula.org/5.0.x-manuals/en/console/console/Bacula_Console.html

http://www.bacula.org/5.1.x-manuals/en/main/main/Restore_Command.html

client=host1  - данные с какого хоста будем восстанавливать

restoreclient=bacula-host - на какой хост, для простоты проще всего на саму бакулу-сервер

where=/bacula/bacula-restores - файловое место на restoreclient куда разворачиваем бекап

current - automatically select the most current set of backups for the specified client.

file - какой файл

После done обязательно нужен перенос строки (т.е. кол-во строк в restore_check.bacula - 2)

В итоге восстанавливаем файл из самого последнего бекапа с хоста host1 на хост bacula-host в /bacula/bacula-restores

Сам скрипт:

cat /root/scripts/restore_check.sh

 #!/bin/bash

client[0]="host1"
client[1]="host2"
client[2]="host3"
client[3]="host4"
client[4]="host5"
client[5]="host6"

email="unix196\@gmail.com"

number=`shuf -i 0-5 -n 1`

old_client=`cat /root/scripts/restore_check.bacula  | grep -v "^$" | awk '{print $2 }' | awk -F = '{ print $2 }'`
new_client="${client[${number}]}"

sed s/$old_client/$new_client/  /root/scripts/restore_check.bacula  -i /root/scripts/restore_check.bacula
bconsole < /root/scripts/restore_check.bacula >> /root/scripts/tmp.log

sleep 20
echo -e "\n\n Check restored file on server bacula: " >> /root/scripts/tmp.log
tree /bacula/bacula-restores/ >> /root/scripts/tmp.log

cat /root/scripts/tmp.log | mail -s "Check restore client $new_client" $email

rm /root/scripts/tmp.log
rm -rf /bacula/bacula-restores/*

 Некоторые пояснения касательно скрипта:

  • в массиве client указываем хосты, которые будем разворачивать (можно указать больше-меньше, не важно, главное периодически проверять бекапы разных клиентов)
  • генерируем случайное число, это число используем потом как ключ массива
  • редактируем через sed файл restore_check.bacula, указывая новый клиент после строки "client="
  • отравляем на вход bconsole отредактированный файл restore_check.bacula

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

Please publish modules in offcanvas position.