Shell Script para deletar um intervalo de Volumes do Bacula

Algumas vezes o novo administrador do Bacula deseja apagar diversos volumes em Disco criados por engano, seja por falha no planejamento ou por algum erro de configuração.

Este objetivo pode ser cumprido com o seguinte script*: deletevols.sh

#!/bin/bash
#
# Usage: deletevols.sh "archive-device" "volumes"
# $1 $2
#
# For example:
#
# deletevols.sh /home/bacula/volumes "[Tt]este*"
#
# Note:
# The second argument must be quoted.
#
DEVICE=$1
VOLUMES=$2
VOLS=($(ls $DEVICE/$VOLUMES | awk -F' ' '{print $1}'))
for VOL in ${VOLS[@]}; do
echo -e "delete volume=${VOL##/*/}nyesn" | bconsole | grep "not found"
if [ "$?" -eq "1" ]; then
printf "Volume %s successfully deleted.n" $VOL
rm -f $DEVICE/${VOL##/*/}
else
printf "Volume %s not deleted.n" $VOL
fi
done

Funciona assim:

root@bacula-server:/home/bacula# ls -l ./volumes/
total 16
-rw-r----- 1 bacula tape 207 Abr 27 21:40 teste1
-rw-r----- 1 bacula tape 207 Abr 27 21:40 Teste1
-rw-r----- 1 bacula tape 207 Abr 27 21:40 teste2
-rw-r----- 1 bacula tape 207 Abr 27 21:40 Teste2
root@bacula-server:/home/bacula# ./deletevols.sh /home/bacula/volumes "[Tt]este*"
Volume /home/bacula/volumes/teste1 successfully deleted.
Volume /home/bacula/volumes/Teste1 successfully deleted.
Volume /home/bacula/volumes/teste2 successfully deleted.
Volume /home/bacula/volumes/Teste2 successfully deleted.

O primeiro parâmetro é o “archive device” onde estão seus volumes (ipodem existir volumes de vários pools aqui). O segundo parâmetro para o script é uma expressão regular para os nomes dos volumes e deve estar entre aspas para que o shell não faça o tratamento prévio.

*Contribuição da Ana Emília Arruda.

Disponível em: pt-brPortuguês

Deixe uma resposta