zoukankan      html  css  js  c++  java
  • SVN库实时同步设置

    为了安全起见,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

  • 相关阅读:
    vue 交互 跨域获取数据
    计算属性computed缓存 与 methods 的思考
    _this 与 this
    python 占位符 %s Format
    odoo 中字段属性对象Field
    安装CentOS7.7图解
    docker的volumes
    Docker常用命令详解
    Ubuntu修改时区和更新时间
    SqlServer创建时间维度
  • 原文地址:https://www.cnblogs.com/liangjichen/p/4478221.html
Copyright © 2011-2022 走看看