All pastes #67586 Raw Edit

Miscellany

public text v1 · immutable
#67586 ·published 2006-06-20 08:51 UTC
rendered paste body
#!/bin/sh

LS="/bin/ls"
AWK="/usr/bin/awk"
TAIL="/usr/bin/tail"
HEAD="/usr/bin/head"
DIFF="/usr/bin/diff"
RM="/bin/rm"
SVNADMIN="/usr/bin/svnadmin"
BZIP2="/usr/bin/bzip2"


if [ ! $1 ]
then
	echo Please enter the base directory
	exit
fi

if [ ! $2 ]
then
	echo Please supply the destination directory to backup to!
	exit
fi

LEN=`echo $1 | awk '{ len=length($0); print(len) }'`
echo Starting Backup ... ON `/bin/date`

for REPO in $(ls $1 -R | grep /dav | grep -v _backups_ | awk '{ print substr($0,0,(length($0)-4));}')
do
	CURRENT_REPO_VER=`/usr/bin/svnlook youngest $REPO`
	DEST_BACKUP_DIR=`echo $2$REPO`
	mkdir -p $DEST_BACKUP_DIR
	
	DEST_BACKUP_FILE_HEAD=$DEST_BACKUP_DIR`echo $REPO $LEN | awk '{ len=split(substr($1,$2+1,80),a,"/"); for(i=2;i<len;i++){printf(a[i]);}}'`
	
	CURRENT=$DEST_BACKUP_FILE_HEAD
 
	
	CURRENT_COMPRESSED=$CURRENT.bz2
	PREVIOUS_REPO_VER=`$TAIL -1 ${DEST_BACKUP_DIR}/ver.txt`

	echo Current: $CURRENT_COMPRESSED

	echo Current Revision No: $CURRENT_REPO_VER

	echo Previous Revision No: $PREVIOUS_REPO_VER
#check to see if folder is empty by checking that the PREVIOUS_REPO_VER strins is null
	if [ -z "$PREVIOUS_REPO_VER" ]; then
		PREVIOUS_REPO_VER="0"
	fi
	
	if((  ("$CURRENT_REPO_VER" > "$PREVIOUS_REPO_VER") ))
	then

		echo Starting $REPO at `/bin/date`
		
		echo Backing up $REPO to $CURRENT
		echo dumping $REPO
		$SVNADMIN dump $REPO > $CURRENT
		echo Compressing $CURRENT
		$BZIP2 -vv -f -9 $CURRENT
		echo compression finished!!!
	fi
		
	echo $CURRENT_REPO_VER > ${DEST_BACKUP_DIR}/ver.txt
	echo Finished Backing up $REPO at `/bin/date`
done
echo Backup Completed at `/bin/date`