(转)SVN:利用svnsync和hooks单向备份同步版本库

  1. 前言
    SVN部署好了之后,备份又是个问题。这里选择svnsync工具进行备份。
    从centos上的源库备份到Windows server2012 服务器中(我是从windows server2012[192.168.1.1]上的源库备份到windows 2008R2[192.168.1.2]备份库上)。

注意注意再注意:这个是单向同步,备份库不能有任何人为修改版本号,否则会同步失败,否则会同步失败,否则会同步失败

  1. 实施过程
    2.1 备份服务器svn配置(我这里的192.168.1.2)
    首先要安装VisualSVN Server Manager,这个直接点击安装,默认即可。
    然后右键“Repositories”, 新建仓库:
    (转)SVN:利用svnsync和hooks单向备份同步版本库_第1张图片
    选择第一个(版本不一样,第一步选择的也不一样),下一步:
    (转)SVN:利用svnsync和hooks单向备份同步版本库_第2张图片
    这里一定要选择第一个,空白仓库。设置仓库名,我这里用的是“svnMirror”。
    然后需要修改仓库的配置文件。仓库的地址是:D:\Repositories\svnMirror\hooks(视情况而定)
    修改文件”pre-revprop-change.tmpl”将其最后一行修改为:”exit 0”,
    然后复制一份,文件名:”pre-revprop-change.bat”, 把内容改为
    “echo “Changing revision properties other than svn:log is prohibited” >&2
    exit 0”

如图所示:
(转)SVN:利用svnsync和hooks单向备份同步版本库_第3张图片

添加用户,右键“Users”,新建用户,权限一定要给予“读写”。
到这里Windows端svn算是配置好了。

2.2 linux端配置(如果你的源库是windows,使用的命令都是一样的,本人经过测试完全成功)
首先初始化同步设置(windows操作一样):

svnsync init https://192.168.1.2:4431/svn/svnMirror  file:///zfspool/svn/project --username svnMirror --password 123456

语法是:svnsync init {备份库url} {源库url} 备份库的用户名 密码
注意本地url是三个斜杠的:///
其中4431是自定义的端口号,如果是默认的可以不用加。

******** 注意 **********
这里面需要有一点注意的,我在使用https初始化、同步和后面结合hooks,提交后自动同步操作的时候,提示ssl认证失败,如果你要嫌麻烦的话,可以像我一样把SVN的https换成http访问,具体修改看下图(版本不一样,设置可能也不一样):
(转)SVN:利用svnsync和hooks单向备份同步版本库_第4张图片

然后第一次备份:

svnsync sync https://192.168.1.2:4431/svn/svnMirror

只需要备份库地址,初始化的时候已经设置源库地址了。执行完就同步成功了。

2.3 结合hooks实现,只要在源库commit后,直接同步到备份库里面

在源库服务器上源库的hooks中创建 post-commit.bat 文件
内容如下:

svnsync sync --non-interactive https://192.168.1.2:4431/svn/svnMirror --username svnMirror --password 123456

这步完成后,在本地向源库服务器svn提交数据时,就会自动同步到备份库

注意:这个是单向同步,而且备份库不能有任何人为修改版本号,否则会同步失败。

你可能感兴趣的:(系统运维)