svn备份脚本



#!/bin/bash
####################################################################
#
#本脚本通过参数 0 实现svnadmin hotcopy 的全量备份
#      通过参数 1 实现svnadmin dump 的增量备份
#
#每天凌晨0时1分 执行svnbackup.sh 0 删除备份版本记录文件backversion,
#实现svnadmin hotcopy 的全量备份。
#
#每个小时执行一次脚本,实现增量备份,当版本未变更时将不执行备份。
#具体执行备份的时间可以根据需要调整crontab
#
#1 0 * * * /opt/csvn/bin/svnbackup.sh 0
#55 * * * * /opt/csvn/bin/svnbackup.sh 1
#
####################################################################


#设置SVN命令所在目录
SVN_BIN_DIR=/opt/csvn/bin


#设置SVN仓库所在位置
SVN_REPO_DIR=/opt/csvn/data/repositories


#设置SVN备份所在目录
SVN_BACKUP_DIR=/opt/csvn/data/dumps


if [ $# -lt 1 ];then
  echo $0 "<backup type>"
  echo "               backup type:"
  echo "                         0: hotcopy 全量备份"
  echo "                         1: svnadmin dump 增量备份"
  exit
fi


for repodir in `ls $SVN_REPO_DIR`
do
  DATE=`date +%Y%m%d%H%M`
  if [ -d $SVN_REPO_DIR/$repodir ];then
    mkdir -p $SVN_BACKUP_DIR/$repodir
    cd $SVN_BACKUP_DIR/$repodir
    if [ "$1" -eq "0" ];then
      rm -rf $SVN_BACKUP_DIR/$repodir/backversion
    fi
    if [ -e $SVN_BACKUP_DIR/$repodir/backversion ];then
      OLD_VERSION=`cat $SVN_BACKUP_DIR/$repodir/backversion`
      YOUNGEST=`$SVN_BIN_DIR/svnlook youngest $SVN_REPO_DIR/$repodir`
      if [ "$OLD_VERSION" -eq "$YOUNGEST" ];then
        echo "$repodir 版本未变化,无需备份"
      else
        OLD_VERSION=`expr $OLD_VERSION + 1`
        echo "svnadmin dump $repodir $OLD_VERSION:$YOUNGEST begin"
        $SVN_BIN_DIR/svnadmin dump $SVN_REPO_DIR/$repodir --incremental -r $OLD_VERSION:$YOUNGEST >$SVN_BACKUP_DIR/$repodir/$repodir-dump-r$OLD_VERSION-$YOUNGEST-$DATE
        gzip $repodir-dump-r$OLD_VERSION-$YOUNGEST-$DATE
        echo $YOUNGEST >backversion 
        echo "svnadmin dump $repodir $OLD_VERSION:$YOUNGEST end"
      fi
    else
      echo "svnadmin hotcopy $repodir beging"
      $SVN_BIN_DIR/svnadmin hotcopy $SVN_REPO_DIR/$repodir $repodir
      YOUNGEST=`$SVN_BIN_DIR/svnlook youngest $repodir`
      tar -czf $repodir-hotcopy-r0_$YOUNGEST-$DATE.tar.gz $repodir
      echo $YOUNGEST >backversion
      rm -rf $repodir
      echo "svnadmin hotcopy $repodir end"
    fi
  fi
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值