#!/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