165 lines
4.3 KiB
Plaintext
Executable File
165 lines
4.3 KiB
Plaintext
Executable File
expire_backup ()
|
|
{
|
|
# This function is used to expire backups
|
|
|
|
# set -x # Uncomment to debug this function
|
|
|
|
clear # Clear the screen
|
|
|
|
# Display the screen header and menu
|
|
|
|
echo -e "
|
|
\n\n\t\tDIRVISH EXPIRE BACKUP(S)\n
|
|
\n\t1) Delete Expired Backups for ALL Hosts
|
|
\n\t2) Delete Expired Backups for One Host
|
|
\n\t3) Expire One Backup for One Host
|
|
\n\t4) Expire All Backups for One Host
|
|
\n\t5) Previous Menu
|
|
\n\n\tSelect an Option: \c"
|
|
|
|
read ANS
|
|
case $ANS in
|
|
1) echo -e "\n\tDeleting Expired Backups for ALL Hosts..."
|
|
dirvish-expire --tree
|
|
echo -e "\n\tTasks Complete..."
|
|
echo -e "\n\tPress Enter to Continue...\c"
|
|
read KEY
|
|
;;
|
|
2) echo -e "\n\tEnter the Hostname to Delete Expired Backups: \c"
|
|
read H
|
|
dirvish-expire --tree --vault $H | more
|
|
echo -e "\n\tTasks Complete..."
|
|
echo -e "\n\tPress Enter to Continue...\c"
|
|
read KEY
|
|
;;
|
|
3) EXPIRE_STAMP="$(date "+%Y-%m-%d %H:%M:%S")"
|
|
echo -e "\n\tEnter the Hostname for the Backup Image: \c"
|
|
read H
|
|
|
|
BANK_LIST=$(parse_conf)
|
|
MYPWD=$(pwd)
|
|
|
|
for B in $BANK_LIST
|
|
do
|
|
if [ -d ${B}/${H} ]
|
|
then
|
|
cd ${B}/${H}
|
|
IMAGE_LIST=$(find . -type d -name "*-[0-9][0-9]*" | cut -c3-)
|
|
fi
|
|
done
|
|
|
|
echo -e "\nSelect an Image to Expire from the Following List:\n"
|
|
echo -e "\n$IMAGE_LIST" | more
|
|
echo -e "\n\nEnter the Image to Expire: \c"
|
|
read IMAGE_NAME
|
|
|
|
cd $MYPWD
|
|
if [[ -r ${B}/${H}/${IMAGE_NAME}/summary ]]
|
|
then
|
|
# This is where we expire a backup that is not currently
|
|
# expired. The 'summary' file contains the expire datestamp
|
|
|
|
echo -e "\n\tExpiring Image: $IMAGE_NAME"
|
|
|
|
sed s/"$(grep Expire ${B}/${H}/${IMAGE_NAME}/summary)"/"$(grep Expire ${B}/${H}/${IMAGE_NAME}/summary | cut -f 1-4 -d ' ') $EXPIRE_STAMP"/g "${B}/${H}/${IMAGE_NAME}/summary" > "${B}/${H}/${IMAGE_NAME}/summary2"
|
|
|
|
mv "${B}/${H}/${IMAGE_NAME}/summary2" "${B}/${H}/${IMAGE_NAME}/summary"
|
|
fi
|
|
|
|
# We expired the backups; now we ask the user if we should delete
|
|
# the expired images
|
|
|
|
STOP=0
|
|
until (( STOP == 1 ))
|
|
do
|
|
echo -e "\n\tTasks Complete...Do You Want to Delete This Expired Image? (y/n): \c"
|
|
read ANS
|
|
case $ANS in
|
|
y|Y) echo -e "\n\tDeleting Expired Image: $IMAGE_NAME"
|
|
|
|
# This next command deletes all expired images for $H
|
|
dirvish-expire --vault $H
|
|
|
|
RC=$?
|
|
echo -e "\n\tDirvish-expire Completed with Return Code: $RC"
|
|
echo -e "\n\tTasks Complete..."
|
|
echo -e "\n\tPress Enter to Continue...\c"
|
|
read KEY
|
|
STOP=1
|
|
;;
|
|
n|N) STOP=1
|
|
continue
|
|
;;
|
|
*) echo -e "\n\tInvalid Entry..."
|
|
;;
|
|
esac
|
|
done
|
|
;;
|
|
4) EXPIRE_STAMP=$(date "+%Y-%m-%d %H:%M:%S")
|
|
clear
|
|
echo -e "\nEnter the Hostname for the Backup Image: \c"
|
|
read H
|
|
|
|
BANK_LIST=$(parse_conf)
|
|
MYPWD=$(pwd)
|
|
|
|
for P in $BANK_LIST
|
|
do
|
|
if [ -d ${P}/${H} ]
|
|
then
|
|
cd ${P}/${H}
|
|
IMAGE_LIST=$(find . -type d -name "*-[0-9][0-9]*" | cut -c3-)
|
|
B=$P
|
|
fi
|
|
done
|
|
|
|
echo -e "\nSetting to Following Images to Expire:\n\n"
|
|
echo "$IMAGE_LIST" | more
|
|
cd $MYPWD
|
|
echo -e "\nPress Enter to Continue...\c"
|
|
|
|
echo "$IMAGE_LIST" | while read IMAGE_NAME
|
|
do
|
|
if [ -f ${B}/${H}/${IMAGE_NAME}/summary ]
|
|
then
|
|
echo "Expiring $IMAGE_NAME"
|
|
sed s/"$(grep Expire ${B}/${H}/${IMAGE_NAME}/summary)"/"$(grep Expire ${B}/${H}/${IMAGE_NAME}/summary | cut -f 1-4 -d ' ') $EXPIRE_STAMP"/g "${B}/${H}/${IMAGE_NAME}/summary" > "${B}/${H}/${IMAGE_NAME}/summary2"
|
|
|
|
if (( $? == 0 ))
|
|
then
|
|
mv ${B}/${H}/${IMAGE_NAME}/summary2 ${B}/${H}/${IMAGE_NAME}/summary
|
|
fi
|
|
fi
|
|
done
|
|
|
|
STOP=0
|
|
until (( STOP == 1 ))
|
|
do
|
|
echo -e "\nTasks Complete...Do You Want to Delete Expired Images? (y/n): \c"
|
|
read ANS
|
|
case $ANS in
|
|
y|Y) echo -e "\nDeleting Expired Images...\n"
|
|
dirvish-expire --vault $H
|
|
RC=$?
|
|
echo -e "\nDirvish-expire Completed with Return Code: $RC"
|
|
echo -e "\nTasks Complete..."
|
|
echo -e "\nPress Enter to Continue...\c"
|
|
read KEY
|
|
STOP=1
|
|
;;
|
|
n|N) STOP=1
|
|
continue
|
|
;;
|
|
*) echo -e "\n\tInvalid Entry..."
|
|
;;
|
|
esac
|
|
done
|
|
;;
|
|
5) :
|
|
;;
|
|
*) echo -e "\nInvalid Entry"
|
|
;;
|
|
esac
|
|
}
|
|
|