#!/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=$1PROJ=$2SCPPATH=$3DATE=`date +"%y-%m-%d"`# test our directory structureif [ ! -d $PROJ ] ; then echo "ERROR: Project path does not exist: " $PROJ exit 10;fiif [ ! -d $PROJ/svn_repo ] ; then echo "ERROR: Project svn repo (/svn_repo) does not exist: " $PROJ exit 11;fiif [ ! -d $PROJ/trac ] ; then echo "ERROR: Project trac (/trac) does not exist: " $PROJ exit 12;fi# remove any previous working files, jicrm -Rf /tmp/$PNAME-$DATE.tar.gz /tmp/$PNAME-$DATE.svn.dump /tmp/$PNAME-$DATE.trac.hotcopy# do the svn dumpsvnadmin dump $PROJ/svn_repo/ >> /tmp/$PNAME-$DATE.svn.dumpif [ "$?" != 0 ] ; then echo "ERROR: SVNDump failed" exit 13fi# cool, now lets hotcopy the trac installtrac-admin $PROJ/trac/ hotcopy /tmp/$PNAME-$DATE.trac.hotcopyif [ "$?" != 0 ] ; then echo "ERROR: Trac hotcopy failed" exit 14fi# now that we have the trac and svn dumped, tar them upcd /tmptar -zcvf /tmp/$PNAME-$DATE.tar.gz $PNAME-$DATE.svn.dump $PNAME-$DATE.trac.hotcopyif [ "$?" != 0 ] ; then echo "ERROR: Tar compression failed" exit 15fi# now we have a backup file ready to sync out, do the SCPscp -B /tmp/$PNAME-$DATE.tar.gz $SCPPATH/$PNAME-$DATE.tar.gzif [ "$?" != 0 ] ; then echo "ERROR: The server to server copy failed. Make sure SSH shared auths are setup right." exit 16fi# remove the working filesrm -Rf /tmp/$PNAME-$DATE.tar.gz /tmp/$PNAME-$DATE.svn.dump /tmp/$PNAME-$DATE.trac.hotcopyecho "Backup $PNAME for $DATE finished"