Linux系统SubVersion定期备份完整脚本
文章作者 100test 发表时间 2008:02:01 15:26:44
来源 100Test.Com百考试题网
具体配置请根据自己需要调整。 
    环境:Centos5
    svn 目录是在/svn上。
    另外,记的在你的/ 下面建如下的目录
    # mkdir -p /backup/svn/data/
    # mkdir -p /backup/svn/daily/
    脚本功能:定期对一些项目进行完整备份。
    project.lst 文件格式如下:
    project1
    project2
    备份脚本如下:
    # !/bin/sh
    #
    #
    # subversion完整备份的脚本,调整好后使用crontab -e放到自动执行里面即可。
    #
    # 备份日志文件
    LogFile=/backup/svn/svnbak.log
    DATE=`date  %Y%m%d`
    # 备份目录
    BakDir=/backup/svn/data
    # 日常备份目录,如果有
    DailyDir=/backup/svn/daily
    # 要备份的项目列表文件,只有项目名
    ProjectLst=/backup/svn/project.lst
    # 所有项目都保存在这个目录下
    SvnDir=/svn
    #svnadmin 程序的路径
    SVNADMIN=/usr/bin/svnadmin
    echo " " >> $LogFile
    echo " " >> $LogFile
    echo "——" >> $LogFile
    echo $(date  "%y-%m-%d %H:%M:%S" ) >> $LogFile
    echo "——" >> $LogFile
    cd $BakDir
    # 读取项目列表
    PROJECTLIST=`cat $ProjectLst`
    for project in $PROJECTLIST
    do
    projectdata=$SvnDir/$project
    destdir=$BakDir/$project
    dumpfile=$DATE.$project.tgz
    if [ -f $BakDir/$dumpfile ]
    then
    echo "backup file have exist!" >>$LogFile
    else
    $SVNADMIN hotcopy $projectdata $destdir ——clean-logs
    tar czvf $dumpfile $destdir >/dev/null
    rm -fr $project
    echo "backup $project done into $dumpfile ">>$LogFile
    fi
    ## 0delete old tgz 此处根据crontab 的时间调整,例如一周一次备份,此处保留了5 份备份,以前的删除
    oldfile="$BakDir/"$ (date  %y%m%d——date= 28 days ago )。$project.tgz
    if [ -f $oldfile ]
    then
    rm -f $oldfile >> $LogFile 2>&.1
    echo "[$oldfile]Delete Old File Success !" >> $LogFile
    else
    echo "[$oldfile]No Old Backup File!" >> $LogFile
    fi
    done
    #0delete previous daily backup files
    cd $DailyDir
    rm -f *