Quote:
Originally Posted by chewitt I made some minor tweaks to the script. To apply them copy the code below and paste them over the original section around line 750:
.....
a) I've altered the naming of the backuplist file to follow the format used by the data files, e.g. 38_Zimbra_Backup_03-October-2009_LIST.txt instead of Backuplist-03-October-2009.txt. Doing this ensures the files are matched and relocated along with the .dar and .md5 files when a full backup is run, instead of leaving them orphaned to clutter up the current backup directory.
.....
Christian |
I like your idea of rationalizing the names of the report files.
I have taken your idea a little bit further to make it easier to maintain, and easier to read the script.
Around line 500 of the script is the beginning of the do_backup function
Code:
function do_backup {
TYPE=$1
if [ $TYPE = "full" ]
then
PREFIX=$FULL_PREFIX
elif [ $TYPE = "diff" ]
then
PREFIX=$DIFF_PREFIX
else
echo "Invalid Backup Type!"
exit 1
fi
*** Add the following line here ****
ARCHIVENAME="$BACKUPWEEK"_"$BACKUPNAME"_"$BACKUPDATE"_"$PREFIX" Just after the backup type has been determined, add a line to save the entire ARCHIVENAME - i.e. the Base Name of the Backup Archive to a variable (eg. 44_Zimbra_Backup_04-November-2009_FULL)
Then at the point where the backup archives and reporting are being created, replace all the long string concatenations with this one variable name. All that needs to be added are the extensions for the DAR archives ( .1.dar) or the REPORTS (.txt), etc.
Saving archive to DAR fiile(s) begins around line 670 ...
Replace all instances of "$BACKUPWEEK"_"$BACKUPNAME"_"$BACKUPDATE"_"$PREFIX " below that point with "$ARCHIVENAME"
Here is what the subsequent code looks like.
Code:
echo "Writing a $TYPE backup: ""$ARCHIVENAME"
echo "into: $ARCHIVEDIR with file sizes of max: $ARCHIVESIZE"
cd $SYNC_DIR
if [ "$CRYPT" = "yes" ]
then
KEY=`cat "$PASSDIR""$PASSFILE"`
echo "Saving Encrypted Archive..."
if [ "$TYPE" = "full" ]
then
nice -19 $DAR_BIN -K bf:$KEY -s $ARCHIVESIZE -z$COMPRESS -Z "*.gz" -Z "*.zip"\
-Z "*.bz2" -Z "*.tgz" -Z "*.zgz" -Z "*.jar" -Z "*.tiff" \
-Z "*.jpg" -Z "*.png" -Z "*.gif" -Z "*.jpeg" -R `pwd` \
-c "$ARCHIVEDIR""$ARCHIVENAME" -Q
elif [ "$TYPE" = "diff" ]
then
nice -19 $DAR_BIN -J bf:$KEY -s $ARCHIVESIZE -z$COMPRESS -Z "*.gz" -Z "*.zip"\
-Z "*.bz2" -Z "*.tgz" -Z "*.zgz" -Z "*.jar" -Z "*.tiff" \
-Z "*.jpg" -Z "*.png" -Z "*.gif" -Z "*.jpeg" -R `pwd` \
-c "$ARCHIVEDIR""$ARCHIVENAME" -Q\
-A "$CURRENTFULL" -Q
else
echo "Unkown Backup Type. Fail."
mail_log
exit 1
fi
else
echo "Saving Unencrtyped Archive..."
if [ "$TYPE" = "full" ]
then
nice -19 $DAR_BIN -s $ARCHIVESIZE -z$COMPRESS -Z "*.gz" -Z "*.zip"\
-Z "*.bz2" -Z "*.tgz" -Z "*.zgz" -Z "*.jar" -Z "*.tiff" \
-Z "*.jpg" -Z "*.png" -Z "*.gif" -Z "*.jpeg" -R `pwd` \
-c "$ARCHIVEDIR""$ARCHIVENAME" -Q
elif [ "$TYPE" = "diff" ]
then
nice -19 $DAR_BIN -s $ARCHIVESIZE -z$COMPRESS -Z "*.gz" -Z "*.zip"\
-Z "*.bz2" -Z "*.tgz" -Z "*.zgz" -Z "*.jar" -Z "*.tiff" \
-Z "*.jpg" -Z "*.png" -Z "*.gif" -Z "*.jpeg" -R `pwd` \
-c "$ARCHIVEDIR""$ARCHIVENAME" -Q\
-A "$CURRENTFULL" -Q
else
echo "Unkown Backup Type. Fail."
mail_log
exit 1
fi
fi
if [ "$?" -ne "0" ]
then
echo "Dar had a problem!"
mail_log
exit 1
else
# Create MD5 Checksums to verify archives after writing to media or network transfers
cd $ARCHIVEDIR
FILENAME=`ls -A "$ARCHIVENAME"*`
if [ -e $FILENAME ]
then
echo "Creating MD5 Checksum for $FILENAME..."
$MD5SUM_BIN -b $FILENAME > "$FILENAME".md5
if [ "$?" -ne "0" ]
then
echo "MD5 Checksum failed!"
mail_log
exit 1
fi
else
echo "$FILENAME not found!"
echo "This should not happen"
mail_log
exit 1
fi
fi
# DRCP Section. To scp newly created archives to a remote system
if [ "$DRCP" = "yes" ]
then
CPNAME=`ls -A "$ARCHIVENAME"*`
echo "copy archive to $REMOTEHOST" remote directory $REMOTEDIR
scp -i /root/.ssh/id_rsa $CPNAME "$SSHUSER"@"$REMOTEHOST":"$REMOTEDIR"
if [ "$?" -ne "0" ]
then
echo "Error copying archive and checksum to $REMOTEHOST"
mail_log
exit 1
fi
fi
# over view of all the files which where backed up
echo "Creating file listing from archive..."
if [ "$CRYPT" = "yes" ]
then
KEY=`cat "$PASSDIR""$PASSFILE"`
nice -19 $DAR_BIN -K bf:$KEY -l "$ARCHIVEDIR""$ARCHIVENAME" -Q\
> "$ARCHIVEDIR""$ARCHIVENAME".txt && gzip -9 "$ARCHIVEDIR""$ARCHIVENAME".txt
else
nice -19 $DAR_BIN -l "$ARCHIVEDIR""$ARCHIVENAME" -Q\
> "$ARCHIVEDIR""$ARCHIVENAME".txt && gzip -9 "$ARCHIVEDIR""$ARCHIVENAME".txt
fi
# Script Timer
STOPTIME=(`date +%s`)
RUNTIME=$(expr $STOPTIME \- $STARTTIME)
hours=$(($RUNTIME / 3600))
seconds=$(($RUNTIME % 3600))
minutes=$(($RUNTIME / 60))
seconds=$(($RUNTIME % 60))
echo
echo "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
echo "$TYPE Zimbra Backup ended at: `date +%H:%M`"
echo "Backup took Hr:$hours Min:$minutes Sec:$seconds to complete"
echo ":::::::::::::::Cheers Osoffice for the script:::::::::::::::::::::::"
(cat $LOG; $UUENCODE_BIN "$ARCHIVEDIR""$ARCHIVENAME".txt.gz "$ARCHIVEDIR""$ARCHIVENAME".txt.gz) \
| mail -c $EMAILCC -s "Zimbra $TYPE Backup Log on $HOSTNAME" $EMAIL
}