El siguiente script RunBeforeJob Bacula verifica cada cliente configurado y envía trabajos de restauración a cada uno de ellos, utilizando el último trabajo de copia de seguridad completado. El número de archivos restaurados al azar se personaliza y el cliente de restauración se repara.
#!/bin/bash # # Um Script para Bacula Restore Test # # Seleciona, aleatoriamente, x (files_per_job) para restaurar de cada Bacula Configured Client para um Restore Client fixo. # # Sugestão e local: # # Bacula Community: /etc/bacula/scripts/restore_test.sh # Bacula Enterprise: /opt/bacula/scripts/restore_test.sh # # By Heitor Faria - http://www.bacula.com.br | http://bacula.us # Alterações efetuadas por Wanderlei Hüttel - https://github.com/wanderleihuttel # Testes: Molinero - https://github.com/molinux # ####### bconsole=$(which bconsole) restore_client="srv_bacula-fd" restore_job="Restore_Files" restore_where="/tmp/bacula_restore" dir_tmp="/tmp" files_per_job=10 debug=1 #0-Executa as restauracoes | #1-Apenas imprime os comandos for client in $(echo ".clients" | ${bconsole} | sed '1,4d' | grep -v "You have messages" | sort); do jobid=$(echo -e "gui on \nlist jobs client=${client} order=desc limit=1 jobstatus=T" | ${bconsole} | sed '1,9d' | grep "|" | cut -d"|" -f 2 | sed 's/\s//g') echo "llist files jobid=${jobid}" | ${bconsole} | sed '1,9d' | grep "|" | cut -d"|" -f 2 | sed 's/^[ \t]*//;s/[ \t]*$//' | sort -R | head -n ${files_per_job} > ${dir_tmp}/files_${jobid}.txt total_files=$(cat ${dir_tmp}/files_${jobid}.txt | wc -l) # Executa apenas jobs com pelo menos 1 arquivo if [ $total_files -gt 0 ]; then # Debug - Se 0 executa o restore, se 1 apenas imprime os comandos if [ $debug -eq 0 ]; then echo "restore jobid=\"${jobid}\" client=\"${client}\" restoreclient=\"${restore_client}\" restorejob=\"${restore_job}\" file=\"</tmp/files_${jobid}.txt\" where=\"${restore_where}\" done yes" | ${bconsole} else echo "restore jobid=\"${jobid}\" client=\"${client}\" restoreclient=\"${restore_client}\" restorejob=\"${restore_job}\" file=\"</tmp/files_${jobid}.txt\" where=\"${restore_where}\" done " fi fi done
No olvide proporcionar permiso de ejecución en el artículo del script. Ejemplo:
chmod o+rx /etc/bacula/scripts/restore_test.sh
Cree un trabajo «Admin» en bacula-dir.conf para ejecutar el script cuando lo desee. Por ejemplo:
Job { Name = "CriadorTestesRestore" JobDefs = "DefaultJob" Type = Admin Client=hfaria-K46CB-fd Messages = Standard Schedule = "test_schedule" RunBeforeJob = /etc/bacula/scripts/restore_test.sh }
Cree un nuevo horario (Schedule) para activar el script a una frecuencia determinada (por ejemplo, todos los lunes):
Schedule { Name = "test_schedule" Run = Full monday at 12:00 }
Verifique el registro de Restaurar trabajos y el estado de los archivos restaurados dentro del Cliente de restauración.
Disponível em: Português (Portugués, Brasil)English (Inglés)Español