svn dump增量备份脚本

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  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,如需转载请自行联系原作者



你可能感兴趣的:(shell,运维)