SVN迁移的背景
公司现存的SVN的物理机另有他用,需要把上面的VisualSVN迁移到虚拟机上面(搭建的WindowsServer机器)。
SVN现状
- windowServer 机器
- 内容大概100G左右
移植问题
- 平时只是使用SVN,没有接触SVN的搭建安装;
- 数据量过大,如何迁移复制的问题;
移植步骤
- 移植方案
- 搭建一个新的WindowsVisualSVN服务;
- 下载地址 WindowsVisualSVN地址;
- 安装参考正常windows软件安装步骤;
- 将原Repository复制到新的机器上面,然后使用VisualSVN打开新的Repository即可。
- 复制的数据量100G左右,过大,采用共享文件夹的形式,在老服务器中,将原Repository文件夹作为分享文件夹。
- 在新机器中,开始-->运行,输入\ip地址,然后输入目标机器的用户名密码,即可查看到共享文件夹,将其文件夹复制过来即可。
- 复制完成后,查看新的svn发现已经完成,因为是使用整个Repository迁移的方法,所以用户和权限组等和原来一样,不需要调整。
- 搭建一个新的WindowsVisualSVN服务;
- 移植出现的问题
- 移植后,新SVN访问没有问题,提交的时候出现了拒绝访问的错误,调整一下VisualSVN仓库的文件夹权限即可。
移植后的思考
- SVN的热备份
在迁移的过程中,发现原SVN的备份机制是,靠人工手工定期执行一个备份脚本(脚本就是将原Repository复制一份到另外一个文件夹中)。 - SVN的双击热备份
设定,主力机为A,备份机为B。- 两个机器中,均设置一个可读写用户;
- 在备份库中,增加一个hook,pre-revision-change,内容设置为exit-0
- 主力机A中执行命令;
- 通过以上步骤,可以进行svn同步,但需要手工执行命令,实时热备份的话,需要在主力机上,增加一个hook,
#格式 svnsync init 目标库(B) 源库(A) --username 用户名 --password 密码 #用户名密码为目标库的账号、密码 #A和B的格式为,仓库地址如http://ip/svn/Test svnsync init B A --username username --password password #执行同步命令, svnsync sync B --username username --password password #hock内容(在post commit钩子上增加) echo off set SVN_HOME="C:\Program Files\VisualSVN Server" %SVN_HOME%\bin\svnsync sync A --config-dir "D:\Repositories\Test" --source-username userName --source-password password --sync-username userName --sync-password password
网友评论