SVN 实时备份

5 篇文章 0 订阅

有一次SVN服务器机器坏了,整个研发部门都无法工作了,压力就全在我一个人身上了。好在很快恢复了,但未雨绸缪,以后不能在遇到这种事情了,SVN这么重要的服务器,必须双向备份,快速切换。


镜像服务器:192.168.11.94

原始服务器: 192.168.11.194

镜像服务器操作:

——————————————————————————————————————————————————————————

 在镜像服务器创建目标仓库:

svnadmin create /space/repos/Atest


修改pre-revprop-change文件(cp pre-revprop-change.tmpl pre-revprop-change)

#pre-revprop-change


#!/bin/sh

USER="$3"
if [ "$USER" = "admin" ]; then exit 0; fi
echo "Only the svnsync user can change revprops" >&2


exit 1



让pre-revprop-change有可执行权限 chmod 755 pre-revprop-change


初始化

svnsync init --username admin --paasword admin123 svn://192.168.11.94/Atest svn://192.168.11.194/Atest


同步数据

svnsync sync --username admin --password admin521 svn://192.168.12.94/Atest


如果指向中途发送中断,执行下面命令,重新sync

svn propdel svn:sync-lock --revprop -r 0


原始服务器操作:

——————————————————————————————————————————————————————————————

修改仓库下post-commit 文件,熟悉python,直接python实现了


#!/usr/bin/python
#coding=utf-8

import os
import commands
import sys
import logging

def init_log(log_level,logpath):
    logger = logging.getLogger()
    '''
    from logging.handlers import RotatingFileHandler
    ro_hdlr=RotatingFileHandler(logpath, maxBytes=0,backupCount=5)
    logger.addHandler(ro_hdlr)
    ro_hdlr.doRollover()
    '''
    hdlr = logging.FileHandler(logpath)
    formatter = logging.Formatter('%(asctime)s [%(levelname)-8s %(module)s:%(lineno)d] %(message)s')
    hdlr.setFormatter(formatter)
    logger.addHandler(hdlr)
    logger.setLevel(log_level)

    return logger

log=init_log(0,'/space/repos/allconfig/log/sync.log')


repos=os.path.basename(sys.argv[1])
log.info("*"*20+repos)

output=commands.getoutput('/usr/local/subversion/bin/svnsync sync --non-interactive --username admin --password admin123 svn://192.168.11.94/'+repos)
log.info('sync log :'+output)

赋予post-commit 可执行权限。这样以后这个项目有人提交新的代码后,就可以同步到镜像服务器了。一旦原始服务器坏了,可以使用relocate 切换到镜像服务器继续工作,但切换过程中,会提示UUID不对,SVN 1.5以上版本可以修改镜像服务器的UUID  

svnadmin setuuid /var/svn/repos-new 2109a8dd-854f-0410-ad31-d604008985ab

SVN 1.4版本没有这个功能,那只能通过工具批量修改entries文件了。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
目的: 1、 在192.16.21.70上面配置SVN服务器(简称服务器A); 2、 定时将服务器A上面的程序自动备份到192.16.21.82服务器上(该服务器简称服务器B); 3、 服务器工具软件采用“VisualSVN Server Manager VisualSVN Ltd. 版本: 2.1.10”; 4、 服务器使用的操作系统均是Windows2003 Server; 配置服务器A: 步骤一:安装VisualSVN Server Manger软件,软件安装在D:\Program Files\VisualSVN Server\,库文件配置在” E:\Repositories\ “; 步骤二:创建用户和创建库文件 配置服务器B: 步骤一:安装VisualSVN Server Manger软件,软件安装在D:\Program Files\VisualSVN Server\,库文件配置在” E:\Repositories\ “; 步骤二:创建用户和创建K1_SVN_BAK库文件 步骤三、创建“pre-revprop-change.bat”文件:在“E:\Repositories\k1_svn_bak\hooks”目录下创建文件“pre-revprop-change.bat”,内容如下: @echo off exit 0; 步骤四、修改文件:修改pre-revprop-change.tmpl文件,用记事本打开该文件,把文件最后的exit 1改为exit 0 步骤五、同步初始化 在备份服务器B上,打开命令提示符窗口,将目录进入到如下:“D:\Program Files\VisualSVN Server\bin>”,在此目录下运行如下命令 svnsync init file:///e:/Repositories/k1_svn_bak https://192.16.21.70/svn/K1_SVN 步骤六、实现同步: 在备份服务器B上,打开命令提示符窗口,将目录进入到如下:“D:\Program Files\VisualSVN Server\bin>”,在此目录下运行如下命令: Svnsync sync file:///e:/Repositories/K1_SVN_BAK (如果提示输入用户名和密码,你可以在这个命令之后加上 username 、password参数 即svnsync sync file:///D:/Repositories/test1BackUp --username username --password password) 步骤七、实现定时备份 在“D:\Program Files\VisualSVN Server\bin”下创建一个*.bat文件,例如Autobat.bat文件,文件内容为如下: svnsync sync file:///e:/Repositories/k1_svn_bak 然后通过Windows自带的任务计划,创建定时任务即可。 如果版本库较大时,备份的时间会有点慢,花费几个小时或者一天也是有可能的,

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值