#!/bin/bash
#
# tar /etc to /var2/backup/etc.tar.gz, maintaining 2 generations
 
LOCALBAKDIR=/var/backup/etc/

echo "$(date +%Y-%m-%d\ %H:%M:%S): INFO: Preparing ${LOCALBAKDIR} to tar /etc ..."

test -d ${LOCALBAKDIR} || mkdir -pv ${LOCALBAKDIR}
test -d ${LOCALBAKDIR} || exit 1

TARFILE=${LOCALBAKDIR}/etc.tar.gz 
FORMERTARFILE=${LOCALBAKDIR}/etc_former.tar.gz 
test -f ${TARFILE} && mv -v ${TARFILE} ${FORMERTARFILE}
test -f ${TARFILE}.txt && mv -v ${TARFILE}.txt ${FORMERTARFILE}.txt

cd /

echo "$(date +%Y-%m-%d\ %H:%M:%S): INFO: Tar-ing /etc to ${TARFILE} ..."
tar -czvf ${TARFILE} etc >${TARFILE}.txt && echo "$(date +%Y-%m-%d\ %H:%M:%S): GOOD: Successfully tarred /etc to ${TARFILE}, listing in ${TARFILE}.txt" && exit 0

# retry once
echo "$(date +%Y-%m-%d\ %H:%M:%S): WARNING: Failed to tar /etc to ${TARFILE}, retrying ..."
test -f ${TARFILE} && rm -v ${TARFILE} 
test -f ${TARFILE}.txt && rm -v ${TARFILE}.txt 
tar -czvf ${TARFILE} etc >${TARFILE}.txt && echo "$(date +%Y-%m-%d\ %H:%M:%S): GOOD: In 2nd attempt successfully tarred /etc to ${TARFILE}, listing in ${TARFILE}.txt" && exit 0

# retry once more
echo "$(date +%Y-%m-%d\ %H:%M:%S): WARNING: Again failed to tar /etc to ${TARFILE}, retrying once more ..."
test -f ${TARFILE} && rm -v ${TARFILE} 
test -f ${TARFILE}.txt && rm -v ${TARFILE}.txt 
tar -czvf ${TARFILE} etc >${TARFILE}.txt && echo "$(date +%Y-%m-%d\ %H:%M:%S): GOOD: In 3rd attempt successfully tarred /etc to ${TARFILE}, listing in ${TARFILE}.txt" && exit 0

echo "$(date +%Y-%m-%d\ %H:%M:%S): ERROR: Failed to tar /etc to ${TARFILE} in all 3 attempts, giving up."
exit 9

