#!/bin/bash # # This script will backup a project supplied in the # first arguement to the scp path in the second # # Example: # ./backup.sh "projectname" "/project/path" "user@host:/backup/dir" # # IMPORTANT NOTE # You must setup your two machines to allow for passwordless # SSH connections. Instructions can be found at: # http://fedoranews.org/ghenry/rdiff/ # PNAME=$1 PROJ=$2 SCPPATH=$3 DATE=`date +"%y-%m-%d"` # test our directory structure if [ ! -d $PROJ ] ; then echo "ERROR: Project path does not exist: " $PROJ exit 10; fi if [ ! -d $PROJ/svn_repo ] ; then echo "ERROR: Project svn repo (/svn_repo) does not exist: " $PROJ exit 11; fi if [ ! -d $PROJ/trac ] ; then echo "ERROR: Project trac (/trac) does not exist: " $PROJ exit 12; fi # remove any previous working files, jic rm -Rf /tmp/$PNAME-$DATE.tar.gz /tmp/$PNAME-$DATE.svn.dump /tmp/$PNAME-$DATE.trac.hotcopy # do the svn dump svnadmin dump $PROJ/svn_repo/ >> /tmp/$PNAME-$DATE.svn.dump if [ "$?" != 0 ] ; then echo "ERROR: SVNDump failed" exit 13 fi # cool, now lets hotcopy the trac install trac-admin $PROJ/trac/ hotcopy /tmp/$PNAME-$DATE.trac.hotcopy if [ "$?" != 0 ] ; then echo "ERROR: Trac hotcopy failed" exit 14 fi # now that we have the trac and svn dumped, tar them up cd /tmp tar -zcvf /tmp/$PNAME-$DATE.tar.gz $PNAME-$DATE.svn.dump $PNAME-$DATE.trac.hotcopy if [ "$?" != 0 ] ; then echo "ERROR: Tar compression failed" exit 15 fi # now we have a backup file ready to sync out, do the SCP scp -B /tmp/$PNAME-$DATE.tar.gz $SCPPATH/$PNAME-$DATE.tar.gz if [ "$?" != 0 ] ; then echo "ERROR: The server to server copy failed. Make sure SSH shared auths are setup right." exit 16 fi # remove the working files rm -Rf /tmp/$PNAME-$DATE.tar.gz /tmp/$PNAME-$DATE.svn.dump /tmp/$PNAME-$DATE.trac.hotcopy echo "Backup $PNAME for $DATE finished"