随着业务的拓展和开发的深入,svn开发库的体积越来越庞大。原先每天凌晨对开发库进行全库备份的做法满足不了新的需求,于是考虑到对svn库做增量备份。基于时间和精力有限的前提下,我们首先考虑使用shell脚本实现,采用最土的svnadmin dump方式。花最少的时间,达到最想要的结果,无需大段华丽的代码,简单有效即可。
首先是全库备份脚本,计划每个月1号的凌晨1点运行一次,凌晨1点程序猿更新代码的几率大致为零。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
[root@dev ~]# echo
'00 01 1 * * /usr/local/scripts/incr0_svn.sh'
> /
var
/spool/cron/root
[root@dev ~]# cat /usr/local/scripts/incr0_svn.sh
#!/bin/sh
DATE=$(date +%Y%m%d:%H:%M:%S) #定义时间变量,用于文件名后缀
SVN_DIR=/svn_data/jsb #定义SVN库目录变量
SVN_BAK_DIR=/svn_data/backup/ #定义备份文件存放目录变量
echo
'0'
> /tmp/jsb_svn_id #初始化版本号,全库备份一定是从0版本号开始
NUM1=$(cat /tmp/jsb_svn_id) #取初始化版本号
NUM2=$(svnlook youngest $SVN_DIR) #取当前最新的版本号
#开始备份
svnadmin dump $SVN_DIR -r $NUM1:$NUM2 --incremental > $SVN_BAK_DIR/jsb_bak_$DATE
#判断备份是否成功,若成功,则记录当前最新的版本号到临时文件中,用于下次增量备份使用
if
[ $? -eq 0 ];
then
echo $NUM2 > /tmp/jsb_svn_id
else
echo
"backup fail...."
fi
|
其次是增量备份脚本,计划每天凌晨2点运行一次
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
[root@dev ~]# echo
'00 02 * * * /usr/local/scripts/incr1_svn.sh'
> /
var
/spool/cron/root
[root@dev ~]# cat /usr/local/scripts/incr1_svn.sh
#!/bin/sh
DATE=$(date +%Y%m%d:%H:%M:%S) #定义时间变量,用于文件名后缀
SVN_DIR=/svn_data/jsb #定义SVN库目录变量
SVN_BAK_DIR=/svn_data/backup/ #定义备份文件存放目录变量
NUM1=$(cat /tmp/jsb_svn_id) #取初始化版本号
NUM2=$(svnlook youngest $SVN_DIR) #取当前最新的版本号
#开始备份
svnadmin dump $SVN_DIR -r $NUM1:$NUM2 --incremental > $SVN_BAK_DIR/jsb_bak_$DATE
#判断备份是否成功,若成功,则记录当前最新的版本号到临时文件中,用于下次增量备份使用
if
[ $? -eq 0 ];
then
echo $NUM2 > /tmp/jsb_svn_id
else
echo
"backup fail...."
fi
|
本文转自斩月博客51CTO博客,原文链接http://blog.51cto.com/ylw6006/1414267如需转载请自行联系原作者
ylw6006