#!/bin/bash
# Удаляем файлы если том в пуле Scratch
# Удаляем тома из каталога если нет этих файлов
# Удаляем файлы если про них нет информации в каталоге
# СДЕЛАТЬ БЕКАП КАТАЛОГА! :) Чтобы потом не было мучительно больно.
DEVDIR=/bacula/devices # Тут лежат все "ленточки"
POOLS='Scratch Default fullbackup-pool diffbackup-pool incbackup-pool full-pool diff-pool inc-pool' #
MYSQL_CMD="mysql --skip-column-names -u bacula -plna bacula" #
BCONSOLE="/usr/bin/bconsole -s -c /etc/bacula/bconsole.conf" #
for POOL in $POOLS
do
POOLID=`$MYSQL_CMD -e "select PoolId FROM Pool WHERE Name=\"$POOL\""`
VOLLIST=`$MYSQL_CMD -e "select VolumeName FROM Media WHERE PoolId=\"$POOLID\";"`
for VOL in $VOLLIST
do
# echo $POOLID " " $POOL " " $VOL
# echo "Ищем $VOL"
FILE=`find -P $DEVDIR -name "$VOL"`
if [ "$FILE" = "" ]
then
echo "Файл $VOL не найден удаляем из каталога "
$BCONSOLE <<EOD_1
delete volume=$VOL yes
quit
EOD_1
else
if [ $POOL = "Scratch" ]
then
echo "Удаляем том $VOL пула $POOL"
rm -fv `find -P $DEVDIR -name $VOL`
else
echo "Том $VOL в пуле $POOL"
fi
fi
done
for FILE in $DEVDIR/*/*
do
MEDIA=`echo "$FILE" | cut -d'/' -f5`
VOL=`$MYSQL_CMD -e "select VolumeName FROM Media WHERE VolumeName=\"$MEDIA\";"`
if [ "$VOL" = "" ]
then
rm -fv $FILE
echo $FILE have no correspondig volume $VOL removed
# else
# echo $FILE have corresponfig volume $VOL in catalog
fi
done
# Удаляем файлы если том в пуле Scratch
# Удаляем тома из каталога если нет этих файлов
# Удаляем файлы если про них нет информации в каталоге
# СДЕЛАТЬ БЕКАП КАТАЛОГА! :) Чтобы потом не было мучительно больно.
DEVDIR=/bacula/devices # Тут лежат все "ленточки"
POOLS='Scratch Default fullbackup-pool diffbackup-pool incbackup-pool full-pool diff-pool inc-pool' #
MYSQL_CMD="mysql --skip-column-names -u bacula -plna bacula" #
BCONSOLE="/usr/bin/bconsole -s -c /etc/bacula/bconsole.conf" #
for POOL in $POOLS
do
POOLID=`$MYSQL_CMD -e "select PoolId FROM Pool WHERE Name=\"$POOL\""`
VOLLIST=`$MYSQL_CMD -e "select VolumeName FROM Media WHERE PoolId=\"$POOLID\";"`
for VOL in $VOLLIST
do
# echo $POOLID " " $POOL " " $VOL
# echo "Ищем $VOL"
FILE=`find -P $DEVDIR -name "$VOL"`
if [ "$FILE" = "" ]
then
echo "Файл $VOL не найден удаляем из каталога "
$BCONSOLE <<EOD_1
delete volume=$VOL yes
quit
EOD_1
else
if [ $POOL = "Scratch" ]
then
echo "Удаляем том $VOL пула $POOL"
rm -fv `find -P $DEVDIR -name $VOL`
else
echo "Том $VOL в пуле $POOL"
fi
fi
done
for FILE in $DEVDIR/*/*
do
MEDIA=`echo "$FILE" | cut -d'/' -f5`
VOL=`$MYSQL_CMD -e "select VolumeName FROM Media WHERE VolumeName=\"$MEDIA\";"`
if [ "$VOL" = "" ]
then
rm -fv $FILE
echo $FILE have no correspondig volume $VOL removed
# else
# echo $FILE have corresponfig volume $VOL in catalog
fi
done