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 导入数据
第一个脚本,完整备份
#/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
第二个脚本,增量备份
#/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
第三个脚本:只能完整备份
#/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 仓库名称完整路径 < 备份的文件完整路径
本文出自 “xiong” 博客,请务必保留此出处http://xiong51.blog.51cto.com/5239058/1831723
原文:http://xiong51.blog.51cto.com/5239058/1831723