为了安全起见,SVN服务器除了做定时全量备份和增量备份以外,如条件允许,可做实时备份。

这需要2台机器,一台是master server,另一台做mirror server。master做主服务,mirror不对外服务或设置只读(除了同步账号可写外)

另外如果master负载比较高,可以把一些只读的应用设置为从mirror读取,例如Jenkins编译。(需保证实时同步一直工作)

步骤如下(这里以linux sever为例):

加下面代码段到pre-revprop-change以允许svnsync改写svn库属性:

if [ "$USER" = "svnsync" ]; then exit 0; fi

echo "Only the svnsync user can change revprops" >&2

SVN实时备份脚本,替换repo目录下的hook/post-commit,需服务器有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

repos=os.path.basename(sys.argv[1])

log=init_log(0,'/data/svnsynclog/' + repos + '_sync.log')

log.info("*"*20+repos)

output=commands.getoutput('/usr/bin/svnsync sync --non-interactive --username svnsync --password svnsync http://10.0.80.21/svn/'+repos)

log.info('sync log :'+output)

设置svnsync账号有master上的读取权限,mirror上的读写权限

然后提交一些变更测试一下,是否能实时同步过去。同步的日志放在/data/svnsynclog(设置成自己的目录)

OK, 完成。

手工从master到mirror的同步命令:

svnsync init --username svnsync http://10.0.80.21/svn/test http://10.0.80.20/svn/test

svnsync sync --username svnsync http://10.0.80.21/svn/test

最新文章

  1. 4种scope方法
  2. ubuntu14.04利用aliyun安装docker
  3. 性能测试知多少---系统架构分析 转自https://yq.aliyun.com/articles/35147?spm=5176.100239.blogcont24251.8.lS96At
  4. Web前端开发基础 第四课(CSS小技巧1)
  5. int main(int argc,char* argv[]) 简单理解
  6. bnuoj 4187 GCC (数论)
  7. (转)TCP注册端口号大全
  8. 如何去掉 Discuz标题后缀power by discuz
  9. qt实现头像上传功能(朝十晚八的博客,一堆帖子)
  10. springMvc 支持hibernate validator
  11. Java处理java.util.ConcurrentModificationException异常
  12. 2014 I/O返回:Google连接一切
  13. Infer - 文件说明
  14. windows编程学习笔记(三)ListBox的使用方法
  15. 1.2.7 Excel表格打印技巧
  16. Selenium Web 自动化
  17. create-react-app脚手架中配置webpack的方法
  18. 从n个元素中选择k个的所有组合(包含重复元素)
  19. bzoj2879(动态加边费用流)
  20. Thinkphp5 引入第三方类库的方法

热门文章

  1. 在hibernate中使用c3p0数据源
  2. 济南学习 Day 4 T1 am
  3. Difference between ref and out parameters
  4. Windows Phone 8 蓝牙编程
  5. Android发送请求到不同的Servlet,但都是一个Servlet处理
  6. Easyui datebox控件打开页面就验证解决方法
  7. Entity Framework 并发处理借鉴
  8. MongoDB五种树形结构表示法
  9. WebApp
  10. 11g RAC R2 日常巡检--Grid