svn 增量备份脚本,
环境:系统,centos6.5,svn version 1.6.11,httpd Apache/2.2.15 (Unix)
APR 1.3.9, APR-Util 1.3.9,全部为yum编译
一些常用命令
svn ls -v /opt/svn/snn 查看svn目录文件列表
svn --version 查看svn版本
svnadmin create /opt/svn/snn 创建一个svn仓库
svn import /etc/issue file:///opt/svn/snn/1 -m t 导入数据
第一个脚本,完整备份
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#/bin/bash
#
# svn dump全备及增量备份脚本 (全备脚本,境备往下)
FILEDIR=
/opt/svn/snn
#SVN文件目录
BAUPDIR=
/tmp/svn_back_data
#SVN备份保存地址
SVNCONF=
/tmp/svn_back_conf
#SVN配置保存地址
VERSION=
/tmp/svn_back_veri
#增量备份时必须使用版本号码
# 如果目录不存在那么就创建它
[ ! -d $BAUPDIR ] &&
mkdir
$BAUPDIR
[ ! -d $SVNCONF ] &&
mkdir
$SVNCONF
[ ! -d $VERSION ] &&
mkdir
$VERSION
#首先必须停止http跟svn服务
/sbin/service
httpd stop &>
/dev/null
/sbin/service
svnserve stop &>
/dev/null
/usr/bin/svnadmin
dump $FILEDIR > $BAUPDIR/`
date
+%F_%T`.firstsvn &>
/dev/null
/usr/bin/svnlook
youngest $FILEDIR > $VERSION
/frist
.txt &>
/dev/null
/bin/cp
-i
/opt/svn/authfile/conf/
* $SVNCONF
/bin/cp
-i
/etc/httpd/conf
.d
/subversion
.conf $SVNCONF
#备份完成再启动
/sbin/service
svnserve start &>
/dev/null
/sbin/service
httpd start &>
/dev/null
|
第二个脚本,增量备份
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#/bin/bash
#
#
# svn dump全备及增量备份脚本 (增量脚本) 两个脚本分开写
FILEDIR=
/opt/svn/snn
#SVN文件目录
BAUPDIR=
/tmp/svn_back_data
#SVN备份保存地址
SVNCONF=
/tmp/svn_back_conf
#SVN配置保存地址
VERSION=
/tmp/svn_back_veri
#增量备份时必须使用版本号码
#首先必须停止http跟svn服务
/sbin/service
httpd stop &>
/dev/null
/sbin/service
svnserve stop &>
/dev/null
for
i
in
{1..6};
do
FRISTNUM=`
cat
$VERSION
/frist
.txt`
#初始值
let
FRISTNUM=$FRISTNUM+1
#初始值加1开始备份数据,恢复时会报错
/usr/bin/svnlook
youngest $FILEDIR > $VERSION
/two
.txt
INCREMENT=`
cat
$VERSION
/two
.txt`
/usr/bin/svnadmin
dump --incremental -r $FRISTNUM:$INCREMENT $FILEDIR > $BAUPDIR
/svn_increment_
$i
sleep
3
/usr/bin/svnlook
youngest $FILEDIR >
/tmp/svn_back_veri/frist
.txt
#备份完成再启动
/sbin/service
svnserve start &>
/dev/null
/sbin/service
httpd start &>
/dev/null
sleep
24h
done
|
#备份的数据 测试时间自己把控,bash -x xx.sh 查看编译过程
-rw-r--r--. 1 root root 686827436 Jul 29 12:17 2016-07-29_12:16:43.firstsvn
-rw-r--r--. 1 root root 2320 Jul 29 12:20 svn_increment_1
#备份无数据时大小直接为零,恢复时可直接无视
-rw-r--r--. 1 root root 0 Jul 29 12:21 svn_increment_2
-rw-r--r--. 1 root root 973 Jul 29 12:21 svn_increment_3
-rw-r--r--. 1 root root 1422 Jul 29 12:22 svn_increment_4
-rw-r--r--. 1 root root 1871 Jul 29 12:22 svn_increment_5
#恢复如下
#恢复时从第一个开始复制比如:先从完整备份,然后第一,第二,第三依次类推
svnadmin create /opt/svn/snn 先建立新仓库,当然路径随便定义
svnadmin load /opt/svn/snn/ < 2016-07-29_12:16:43.firstsvn
svnadmin load /opt/svn/snn/ < svn_increment_1
svnadmin load /opt/svn/snn/ < svn_increment_3
svnadmin load /opt/svn/snn/ < svn_increment_4
svnadmin load /opt/svn/snn/ < svn_increment_5
第三个脚本:只能完整备份
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#/bin/bash
#
# svn脚本,此脚本只能全备,每周六凌晨1点整备份 0 01 * * 6 /bin/bash /tmp/xx.sh
FILEDIR=
/opt/svn/snn
BACKUPDIR=
/tmp/svn_back_data
SVNCONF=
/tmp/svn_back_conf
# 如果目录不存在那么就创建它
[ ! -d $BACKUPDIR ] &&
mkdir
$BACKUPDIR
[ ! -d $SVNCONF ] &&
mkdir
$SVNCONF
# svn数据全备脚本svnadmin hotcopy 恢复将目录文件反过来写
/usr/bin/svnadmin
hotcopy $FILEDIR/`
date
+%F_%T`.svnback $BACKUPDIR
#将复制出来的配置文件打包
/bin/tar
zcfp $SVNCONF/`
date
+%F_%H-%M`.
tar
.gz
/etc/httpd/conf
.d
/subversion
.conf
/opt/svn/authfile/conf/
* --xattrs &>
/dev/null
|
第三个脚本恢复方式
svnadmin hotcopy 仓库名称完整路径 < 备份的文件完整路径
本文转自812374156 51CTO博客,原文链接:http://blog.51cto.com/xiong51/1831723,如需转载请自行联系原作者