From 6cd97c474fbd9d2cd9585843a354d9a696b3b5ac Mon Sep 17 00:00:00 2001 From: Jack-Benny Persson Date: Mon, 27 Feb 2012 18:57:18 +0100 Subject: [PATCH] Added support for incremental backups --- autotape.sh | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/autotape.sh b/autotape.sh index 2e7b120..0616461 100755 --- a/autotape.sh +++ b/autotape.sh @@ -1,16 +1,19 @@ #!/bin/bash ### Config options ### +INCREMENTAL="yes" # yes/no (yes for incremental backup, no for full backup) BACKUP_DIRS="/mnt/raid1/backups/weekly" DRIVE="/dev/st0" +SNAPSHOT="/mnt/raid1/backups/weekly.snar" # If using incremental backups RECHECK_WAIT=1200 MT="/bin/mt" TAR="/bin/tar" +CP="/bin/cp" ### Functions ### -Do_backup() +Do_full_backup() { sleep 15 # Wait for the tape to get ready... echo "Doing backup..." @@ -21,6 +24,18 @@ Do_backup() exit 0 } +Do_inc_backup() +{ + ${CP} ${SNAPSHOT} ${SNAPSHOT}\-1 + sleep 15 # Wait for the tape to get ready... + echo "Doing backup..." + ${TAR} -cf ${DRIVE} -g ${SNAPSHOT}\-1 ${BACKUP_DIRS} + echo "Backup done!" + sleep 120 #Just in case wait for the tape drive + ${MT} -f ${DRIVE} offline + exit 0 +} + Check_drive() { if [ ! -e ${DRIVE} ]; then @@ -72,6 +87,14 @@ for dirtest in ${BACKUP_DIRS}; do fi done } + +Check_snapshot() +{ +if [ ! -e ${SNAPSHOT} ]; then + echo "${SNAPSHOT} does not exist" >&2 + exit 1 +fi +} ### Main routine ### @@ -82,6 +105,11 @@ Check_utils # Check if the dirs we want to backup exists Check_backupdir +# Check if the snapshot file exist (if running incremental backup) +if [ ${INCREMENTAL} == "yes" ]; then +Check_snapshot +fi + # Check and repeat until the tape drive is on/connected EXIT_STATE=3 while [ ${EXIT_STATE} != 0 ]; do @@ -101,5 +129,14 @@ while [ ${EXIT_STATE} != 0 ]; do done # Finally, begin with the backup! -Do_backup +if [ ${INCREMENTAL} == "yes" ]; then + Do_inc_backup + + elif [ ${INCREMENTAL} == "no" ]; then + Do_full_backup + + else + echo "I don't know what to do, enter yes or no in $INCREMENTAL" >&2 + exit 1 +fi