现在开发通常都会用SVN来进行版本控制,并且SVN服务端也都会统一的建立到某个服务器上来保存项目源码,这没什么问题。但是如果有一天服务器发生了不可恢复的故障,这将造成不可弥补的巨大损失。所以我们要做好备份工作,当主版本库出现问题时,可切换到备用版本库,从而提高SVN的可用性。
今天介绍的就是SVN版本库的远程自动备份,将版本库备份到另一台机器上。当然实现的方式是多种多样的,我采用的是SVN的svnsync工具来同步版本库。
同步备份所需要的命令
1)svnsync init
初始化,建立目标库和源库之间的同步关系
命令格式:svnsync init 目标库URL 源库URL
2) svnsync sync
真正完成同步过程
命令格式: svnsync sync 目标库URL
具体实现过程
假设我们要同步的源版本库为https://192.168.24.187:443/svn/test 位于机器A,(test为建立的测试项目)
目标库在机器B:file:///F:/Repositories/test 为了简单和安全,我们使用file://协议。(同样在机器B上建立相同的test项目,如果已经有相同的项目要先清除)
然后进行以下操作:
1.修改目标库机器B中的脚本“pre-revprop-change.tmpl”
进入目录"F:\Repositories\test” ( F:\Repositories这个是代码库的保存路径,视实际而定)
编辑“pre-revprop-change.tmpl”文件,将其最后一行修改为:”exit 0”;
2.创建脚本文件
名称:pre-revprop-change.bat
内容:echo"Changing revision properties other than svn:log is prohibited">&2
exit 0
3. 初始化操作,建立目标库和源库之间的同步关系
在cmd窗口中使用cd命令,定位到svn安装目录的bin文件夹下,然后输入以下命令:
svnsyncinit file:///F:/Repositories/test https://192.168.24.187:443/svn/test/
如图:
回车后,可能会出现以上错误,意思就是证书验证失败,这时候只要输入“P”,再按回车键即可。然后会提示输入svn的用户名和密码,如下图:
4. 开始备份
继续输入命令:svnsync sync file:///F:/Repositories/test
开始同步:
等待同步完成即可查看到刚同步过来的项目:
实现自动备份:
把命令“svnsync sync file:///F:/Repositories/test”放入一个bat脚本中,然后再通过任务计划程序创建一个任务去定时定时执行这个bat文件,即可实现版本库的定时自动备份。