====== Backup Scripts ====== #!/bin/sh # filename: backup.sh # location: /root/backup/backup.sh # modified : Andrew Stringer 25/04/2004 onwards # modified : AJS 21/11/06 to backup files to nfs mounted directory #my name HOST='ns0' BACKUPLIST='/etc/backup/backuplist.txt' MAILRESULT='an.st@xxx.gov.uk' BACKUPHOST='10.1.1.1' BACKUPHOSTPATH='/vol/dnsbackup' LOCALWRKDIR='/tmp/dnsbackup' MOUNTPATH='/mnt/dnsbackup' LOGFILE="/root/log.txt" #set file to just day number, this will create up to 31 unique #backup files and allow overwriting to stop files getting too many DATE=`date +%d` #today is in format 01-01-2006 TODAY=`date +%d-%m-%Y` #Check if remote file system is mounted printf "%s\n" "Checking if nfs is mounted" if mount|grep ${BACKUPHOSTPATH} >/dev/null 2>&1 then printf "\t%s\n" "${BACKUPHOSTPATH} mounted" else printf "\t%s\n" "${BACKUPHOSTPATH} not mounted, trying to mount" mount ${BACKUPHOST}:${BACKUPHOSTPATH} ${MOUNTPATH} #check mount, bale out if not. if mount|grep dnsbackup >/dev/null 2>&1 then printf "\t%s\n" "${BACKUPHOSTPATH} mounted" else #mail error printf "\t%s\n" "Still not mounted, sending mail & baling out." echo "Unable to mount nfs directory." |mailx -r "backup" -s "ns0.brm.pri - unable to mount dnsbackup, ${TODAY}" ${MAILRESULT} exit 1 fi fi #check if backup location exists, as it is on tmpfs it will be destroyed #each server reboot if [ -d ${LOCALWRKDIR} ]; then printf "\t%s\n" "${LOCALWRKDIR} exists" else printf "\t%s\n" "${LOCALWRKDIR} does not exist, creating" mkdir ${LOCALWRKDIR} fi #remove previous backup printf "%s" "Remove old backup from local server" rm ${LOCALWRKDIR}/* >/dev/null 2>&1 printf "%s\n" "....Done" printf "%s" "Start tar of files" tar cvf ${LOCALWRKDIR}/backup.tar `cat ${BACKUPLIST}` > ${LOGFILE} 2>&1 printf "%s\n" "....Done" printf "%s\n" "tar file is `du -h ${LOCALWRKDIR}/*`" #gzip file printf "%s" "gzip'ing tar file" gzip ${LOCALWRKDIR}/backup.tar printf "%s\n" "....Done" printf "%s\n" "gzipped file is `du -h ${LOCALWRKDIR}/*`" #copy file to todays date printf "%s" "Appending date" mv ${LOCALWRKDIR}/backup.tar.gz ${LOCALWRKDIR}/backup-${HOST}-${DATE}.tar.gz printf "%s\n" "....Done" #move backed up file to nfs mount printf "%s" "Moving file to remote host" mv ${LOCALWRKDIR}/backup-${HOST}-${DATE}.tar.gz ${MOUNTPATH}/${HOST} printf "%s\n" "....Done" printf "%s\n" "Remote file is `du -h ${MOUNTPATH}/${HOST}/*`" #send confirmation printf "%s" "Sending mail confirmation" echo "Backup successful." | mailx -r "backup" -s "$HOST - Backup Success ${TODAY}" ${MAILRESULT} printf "%s\n" "....Done" #umount nfs directory printf "%s" "umount'ing nfs directory" umount ${BACKUPHOST}:${BACKUPHOSTPATH} printf "%s\n" "....Done" exit 0