背景
原服务器空间占满,更换服务器,ip都换掉。
原服务使用if.svnadmin管理。
新服务器需要保留原有用户列表,原有库提交记录的历史信息。
制约因素
原服务器空间满了,所以不能dump出东西,包括导出。所以准备使用服务器之间直接拷贝,使用scp远程复制svn下repo目录。
经验总结
使用命令行svnadmin create xxxx ,可以创建xxx的目录,该目录下有标准的svn结构包括conf目录,format文件等。
默认的svn协议使用的是conf下面的auth,passwd文件认证。
使用if.svnadmin的地址是http协议,其实使用的是httpd服务的认证。
所以在实践中,repo都导过来后,使用svn协议地址,客户端总是报Authorizatiokn failed的提交错误。其实这里没有走if.svnadmin配置的鉴权导致的。
方法步骤
- 保证两台服务器可以网络互通,最好走内网速度快
- 新服务器搭建略过,网上有很多,安装svn,安装httpd,配置php,安装if.svnadmin
-
从老服务器的svn下拷贝repo目录,使用服务器之间的scp命令直接拷贝。一般都有多个项目,注意拷贝时不要让用户提交内容,可以先将svn的权限收拢或停止。
- 将老服务器if.svnadmin的passwdfile文件拷贝到新服务器。可以在httpd的配置文件中看到引用的地址。一般在/etc/httpd/conf.d/subversion.conf配置。
accessfile文件为分组和项目权限笔者不继承,只是需要用户信息所以没有拷贝,可视情况拷贝。
- 重启配置新服务器的subversion.conf, 重启新服务器的httpd
- if.svnadmin里面的配置,需要test一下,都通过。若是不行,一般是权限问题,使用chown -R apache:apache filenameOrDirname 即可。
注意点
- 新服务器的路径,看httpd/conf.d/subversion.conf里面配置的路径
- 新服务器的路径,肯定是http协议的