#!/bin/bash
#svn complete bakup sprit
Logfile=/svndata/svnfullbak/svnbak.log
DATE=`date +%Y%m%d`
#The dir of backup date
Basedir=svnbak
Bakdir=/svndata/svnfullbak/$Basedir.$DATE
if [ -d $Bakdir ]
then
echo 'Backdir had exited'>>$Logfile
else
mkdir -p $Bakdir
fi
#The list of projects only contain projects`s name
Projectlist=/svndata/project.lst
#The dir where projects have exited right now
Svndir=/svndata/svn
#Path of svnadmin
SVNADMIN=/usr/local/svn/bin/svnadmin
echo "" >>$Logfile
echo "" >>$Logfile
echo "-----------------------------------------------------------------------">>$Logfile
echo $(date +"%Y-%m-%d:%H:%M:%S")>>$Logfile
echo "-----------------------------------------------------------------------">> $Logfile
#Read the project's list
PROJECTLIST=`cat $Projectlist`
for project in $PROJECTLIST
do
projectdata=$Svndir/$project
destdir=$Bakdir/$project
$SVNADMIN hotcopy $projectdata $destdir
if [ $? -eq 0 ]
then
echo "[$project.$DATE]Hotcopy back success" >>$Logfile
else
echo "[$project.$DATE]Hotcopy back fail"
fi
done
#Accroding crontab to adapt bakup time ,there keeping 10
Oldtime=`date +%Y%m%d --date="10 days ago"`
Oldfile=/svndata/svnfullbak/$Basedir.$Oldtime
if [ -e $Oldfile ]
then
rm -rf $Oldfile>>$Logfile
echo "*********************************************************************">>$Logfile
echo "[$Oldfile] Delete old Bakup success!">>$Logfile
echo "*********************************************************************">>$Logfile
else
echo "*********************************************************************">>$Logfile
echo "[$Oldfile] No old Bakup file!">>$Logfile
echo "*********************************************************************">>$Logfile
fi