linux svn仓库备份,linux SVN备份

#!/bin/bash

source /etc/profile

back_base_dir=/data/svn_backup

svn_base_dir=/data/svn_pool

log_file=$back_base_dir/svn_backup.log

dayofweek=$(date +%u)

for project in Android IOS UI farm product 官网;do

REPOS_DIR=$svn_base_dir/$project

REPOS_BAK_DIR=$back_base_dir/$project

DATE=$(date +%Y%m%d_%H%M%S)

version_file=$REPOS_BAK_DIR/.version

test -d $REPOS_BAK_DIR ||mkdir -p $REPOS_BAK_DIR

#如果version_file不存在或为空,则给一个初始值

test -s $version_file ||echo '0' > $version_file

#每周日进行全备,其它几天为增量备份

if [ $dayofweek -ne 7 ];then

NUM1=$(cat $version_file)

else

NUM1=0

fi

NUM2=$(svnlook youngest $REPOS_DIR)

#根据版本号判断该增量还是全备

if [ $NUM1 -eq 0 ];then

file=$(date +%F_%H%M%S)_full.dump

else

file=$(date +%F_%H%M%S)_incremental.dump

fi

#版本号相同的话跳过备份

test $NUM1 -eq $NUM2 && { echo $project no modify,go to next repository... ;continue; } ||echo starting  $project backup...

svnadmin dump $REPOS_DIR  -r $NUM1:$NUM2  --incremental > $REPOS_BAK_DIR/$file 2>/dev/null

if [ $? -eq 0 ];

then

# 备份成功的话改变version_file的版本号,并写入日志

echo $NUM2 >  $version_file

echo $(date "+%Y-%m-%d %H:%M:%S") Backup to  $REPOS_BAK_DIR/$file complete... >>$log_file

else

echo "backup fail...."

echo  $(date "+%Y-%m-%d %H:%M:%S") Backup Error...>>$log_file

fi

done

然后把该脚本加入到系统定时任务即可

"10 23 * * * /home/script/svn_backup.sh"

实现功能:

每周日进行全备,其它几天增量备份

若某项目仓库本次与上次备份期间没有提交修改,则跳过该项目

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值