initial commit of a *whole bunch* of old Egressive shell scripts, used to make many people redundant.
This commit is contained in:
commit
43e0f5b59e
329 changed files with 31937 additions and 0 deletions
192
egrdbackup-usb/egrdbackup
Executable file
192
egrdbackup-usb/egrdbackup
Executable file
|
@ -0,0 +1,192 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# egrdbackup
|
||||
#
|
||||
# (c) 2006 Egressive Limited
|
||||
# Backup script using rdiff-backup
|
||||
# by rob@egressive.com
|
||||
# modified by dave@egressive.com 20060920
|
||||
# modified rob@egressive.com 20061206 moved config items into seperate .conf file
|
||||
#
|
||||
##
|
||||
# Description - egrdbackup performs one task:
|
||||
#
|
||||
# Performs incremental backups of designated directory
|
||||
# hierarchy or backup set (minus any exclusions) into a designated
|
||||
# backup directory.
|
||||
#
|
||||
# The current view of the data at any time will reflect the most
|
||||
# recent state of all the files in the backup set. Diffs for
|
||||
# older versions of all files are stored in hidden directories.
|
||||
# Older versions of any file can be recovered using rdiff-backup directly.
|
||||
#
|
||||
# For example, to recover a backup of the directory (and contents) of
|
||||
# /home/operations from 4 days ago, where the backup directory is /backups, run:
|
||||
#
|
||||
# rdiff-backup -r 4D /backups/home/operations/ /home/operations/recovered-$(date "+%Y-%m-%d")
|
||||
#
|
||||
##
|
||||
#
|
||||
# Default Settings
|
||||
#
|
||||
DEBUG=false
|
||||
#
|
||||
if [ $DEBUG == "true" ] ; then
|
||||
echo "Default Settings"
|
||||
fi
|
||||
#
|
||||
RDIFF_COMMAND=`which rdiff-backup`
|
||||
MAIL_COMMAND=`which mail`
|
||||
DF_COMMAND=`which df`
|
||||
GREP_COMMAND=`which grep`
|
||||
TAIL_COMMAND=`which tail`
|
||||
NICE_COMMAND=`which nice`
|
||||
HEAD_COMMAND=`which head`
|
||||
CAT_COMMAND=`which cat`
|
||||
DIRNAME_COMMAND=`which dirname`
|
||||
BASENAME_COMMAND=`which basename`
|
||||
MAIL_TO=root # temporary - overridden in CONF_FILE
|
||||
#
|
||||
#
|
||||
#EGRD_ROOT=/etc/egscripts/egrdbackup
|
||||
EGRD_ROOT=`$DIRNAME_COMMAND $0`
|
||||
EGRD_SCRIPT=`$BASENAME_COMMAND $0`
|
||||
# config file
|
||||
CONF_FILE=$EGRD_ROOT/$EGRD_SCRIPT.conf
|
||||
# name of file to run before and after rdiff-backup runs - for example an initial rsync or usb mount
|
||||
INITIAL_CMD_FILE="initial.sh"
|
||||
POST_CMD_FILE="postrun.sh"
|
||||
#
|
||||
INITIAL_CMD_FILE_OK="true"
|
||||
#
|
||||
# initialise end status
|
||||
BACKUP_STATUS="[SUCCESS]"
|
||||
#
|
||||
# Get local configuration
|
||||
#
|
||||
if [ $DEBUG == "true" ] ; then
|
||||
echo "Get Local Settings"
|
||||
fi
|
||||
if [ -x $CONF_FILE ] ; then
|
||||
. $CONF_FILE
|
||||
else
|
||||
$CAT_COMMAND $LOGFILE | $MAIL_COMMAND -s "[ERROR] Could not find config file for $SERVERNAME backup" $MAIL_TO
|
||||
exit 1
|
||||
fi
|
||||
# logfile
|
||||
LOGFILE=/var/log/$EGRD_LOGNAME.log # use logrotate to manage logs
|
||||
#
|
||||
#
|
||||
##
|
||||
if [ $DEBUG == "true" ] ; then
|
||||
echo "Remove Older versions"
|
||||
fi
|
||||
#
|
||||
# You will need a --force the first time you run, or if you clear out the $RDIFF_DEST
|
||||
# directory at any stage. Probably safer not to use it normally.
|
||||
#
|
||||
# check to see if the default rdiff revision directory is in place - if so, don't force
|
||||
#
|
||||
if [ "$RDIFF_FORCE" == "true" ] ; then
|
||||
RDIFF_FORCE_ARG=" --force "
|
||||
fi
|
||||
#
|
||||
#
|
||||
# If an initial command file exists (say to do an rsync first)
|
||||
#
|
||||
if [ -x $EGRD_ROOT/$INITIAL_CMD_FILE ] ; then
|
||||
. $EGRD_ROOT/$INITIAL_CMD_FILE
|
||||
fi
|
||||
#
|
||||
if ! [ $INITIAL_CMD_FILE_OK == "true" ]
|
||||
then
|
||||
BACKUP_STATUS="[ERROR]"
|
||||
BACKUP_ERROR=" | Error during initial setup"
|
||||
echo "Fatal error while running initial.sh" >> $LOGFILE 2>> $LOGFILE
|
||||
$CAT_COMMAND $LOGFILE | $MAIL_COMMAND -s "$BACKUP_STATUS $SERVERNAME backup $BACKUP_ERROR" $MAIL_TO >> $LOGFILE 2>> $LOGFILE
|
||||
echo "Email sent to $MAIL_TO" >> $LOGFILE
|
||||
echo "Script complete" >> $LOGFILE 2>> $LOGFILE
|
||||
echo "" >> $LOGFILE
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test -d $RDIFF_DEST/rdiff-backup-data ; then
|
||||
if test -n $RDIFF_DAYS_OF_REVISIONS ; then
|
||||
#
|
||||
echo "++++++++++++++++++++++++++++++++++++++++++" >> $LOGFILE
|
||||
echo " Deleting revisions older than $RDIFF_DAYS_OF_REVISIONS days " >> $LOGFILE
|
||||
echo "++++++++++++++++++++++++++++++++++++++++++" >> $LOGFILE
|
||||
# run delete command...
|
||||
echo "Running command: $NICE_COMMAND $RDIFF_COMMAND --force --remove-older-than ${RDIFF_DAYS_OF_REVISIONS}D $RDIFF_DEST" >> $LOGFILE
|
||||
if ! $NICE_COMMAND $RDIFF_COMMAND --force --remove-older-than ${RDIFF_DAYS_OF_REVISIONS}D $RDIFF_DEST >> $LOGFILE 2>> $LOGFILE ; then
|
||||
if ! $TAIL_COMMAND -2 $LOGFILE | $GREP_COMMAND "No increments older" > /dev/null 2>> $LOGFILE ; then
|
||||
BACKUP_STATUS="[ERROR]"
|
||||
BACKUP_ERROR=" | Error deleting revisions"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
#
|
||||
##
|
||||
ALL_RDIFF_EXCLUDES=""
|
||||
if [ -n "$RDIFF_EXCLUDES" ] ; then
|
||||
for i in $RDIFF_EXCLUDES ; do
|
||||
ALL_RDIFF_EXCLUDES=$ALL_RDIFF_EXCLUDES" --exclude $i "
|
||||
done
|
||||
fi
|
||||
#
|
||||
# Start Rdiff-backup!
|
||||
#
|
||||
# make sure log file exists
|
||||
if [ $DEBUG == "true" ] ; then
|
||||
echo "Start backup"
|
||||
fi
|
||||
touch $LOGFILE
|
||||
DATE=`date`
|
||||
echo "+++++++++++++++++++++++++++++++++++++++++++" >> $LOGFILE
|
||||
echo " Starting backup ($DATE) " >> $LOGFILE
|
||||
echo "+++++++++++++++++++++++++++++++++++++++++++" >> $LOGFILE
|
||||
echo "Running command: $NICE_COMMAND $RDIFF_COMMAND $RDIFF_ARGS $ALL_RDIFF_EXCLUDES $RDIFF_SRC $RDIFF_DEST " >> $LOGFILE
|
||||
if ! $NICE_COMMAND $RDIFF_COMMAND $RDIFF_FORCE_ARG $RDIFF_ARGS $ALL_RDIFF_EXCLUDES $RDIFF_SRC $RDIFF_DEST \
|
||||
>> $LOGFILE 2>> $LOGFILE ; then
|
||||
echo "Error Code - rdiff-backup returned: $?" >> $LOGFILE
|
||||
fi
|
||||
if ! $TAIL_COMMAND -3 $LOGFILE | $GREP_COMMAND "Errors 0" > /dev/null 2>> $LOGFILE
|
||||
then
|
||||
BACKUP_STATUS="[ERROR]"
|
||||
BACKUP_ERROR=$BACKUP_ERROR" | Error during backup"
|
||||
fi
|
||||
#
|
||||
if [ $DEBUG == "true" ] ; then
|
||||
echo "============================="
|
||||
tail -10 $LOGFILE
|
||||
echo "============================="
|
||||
fi
|
||||
#
|
||||
if [ $DEBUG == "true" ] ; then
|
||||
echo "Log and email out results"
|
||||
fi
|
||||
#
|
||||
echo "File system usage:" >> $LOGFILE
|
||||
$DF_COMMAND -h >> $LOGFILE 2>> $LOGFILE
|
||||
#
|
||||
if [ $DEBUG == "true" ] ; then
|
||||
echo "Finish"
|
||||
fi
|
||||
#
|
||||
DATE=`date`
|
||||
echo "+++++++++++++++++++++++++++++++++++++++++++" >> $LOGFILE
|
||||
echo " Completed backup ($DATE) " >> $LOGFILE
|
||||
echo "+++++++++++++++++++++++++++++++++++++++++++" >> $LOGFILE
|
||||
#
|
||||
#
|
||||
# If a post command file exists (say to unmount a usb drive)
|
||||
#
|
||||
if [ -x $EGRD_ROOT/$POST_CMD_FILE ] ; then
|
||||
. $EGRD_ROOT/$POST_CMD_FILE
|
||||
fi
|
||||
#
|
||||
$CAT_COMMAND $LOGFILE | $MAIL_COMMAND -s "$BACKUP_STATUS $SERVERNAME backup $BACKUP_ERROR" $MAIL_TO >> $LOGFILE 2>> $LOGFILE
|
||||
echo "Email sent to $MAIL_TO" >> $LOGFILE
|
||||
echo "Script complete" >> $LOGFILE 2>> $LOGFILE
|
||||
echo "" >> $LOGFILE
|
Loading…
Add table
Add a link
Reference in a new issue