团队里有一台SVN服务器,空间达到了几十个G,之前一直是隔段时间全盘拷贝备份,但是感觉太烦锁了,前段时间做了将这台服务器SVN的内容同步到另一台服务器上,挺好用的,总结一下,过程:
操作系统:windows server 2008
SVN:VisualSVN Server
服务器:A表示原来代码服务器,B表示同步服务器
备份服务器安装与A相同的VisualSVN Server版本
1.在B上的环境变量(path)添加:C:\Program Files (x86)\VisualSVN Server\bin 添加这一步主要是为了下面用到SVN的命令不用输路径
2.创建库,由于A服务器已有了很多库,所以做成了批处理文件的方式,文件内容如下:
svnadmin create 盘符:/Repositories/项目库1
svnadmin create 盘符:/Repositories/项目库2
……
项目库1、2的名称与A里的一样
然后执行这个批处理文件,然后Repositories会出现很多库文件夹了……
3..创建目标库的hooks文件,文件名为pre-revprop-change.bat,内容为空,先放在..\sysmodel目录下
4.将上步创建的文件拷到每个库文件夹下,跟上步一样,用批处理文件,文件内容:
copy /y 本地盘符:\Repositories\sysmodel\pre-revprop-change.bat 盘符:\Repositories\项目库1\hooks
copy /y 本地盘符:\Repositories\sysmodel\pre-revprop-change.bat 盘符:\Repositories\项目库2\hooks
……
然后执行这个批处理文件
5.关联A与B里的库(初始化),还是用批处理:
svnsync init file:///本地盘符:/Repositories/项目库1 项目库1的SVN路径(在A服务器上的)
svnsync init file:///本地盘符:/Repositories/项目库2 项目库2的SVN路径(在A服务器上的)
……
然后执行这个批处理文件,这一步是将A的内容同步下来了,时间有点久……
6.到上一步,B与A的内容一致了,但是如果A上某个库的项目库有更新怎么办呢?这时要用到windows里的任务计划功能了
(1)新建同步库.bat的批处理,内容如下:
svnsync sync file:///本地盘符:/Repositories/项目库1
svnsync sync file:///本地盘符:/Repositories/项目库2
……
(2)新建任务计划,在计划里调用上一步建立的批处理文件。每当任务执行时,就可以将A服务器里对应项目库的更新内容差量更新下来了。