SVN 服务器迁移
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SVN 服务器迁移相关的知识,希望对你有一定的参考价值。
公司需要更换服务器,原服务器上配置有SVN,需要把SVN迁移到新服务器上。不知道怎么操作。
看高人如下说:
SVN迁移可能有很多原因, 可能是我们想换Repository目录, 或者是想换一台机器, 等等.
SVN迁移很容易做, 按照下面步骤就可以:
1. 将原来的Repository导出为一个文件dumpfile
> svnadmin dump path/to/old-repo > dumpfile
2. 创建新的Repository, 创建方法可以参考 Windows 平台安装Subversion server
3. 将dumpfile导入到新的Repository
> svnadmin load path/to/new-repo < dumpfile
4. 检查新的Repository的conf/目录下的配置文件, 检查hooks/目录下的构子程序等等...
但是对SVN不太熟,找了半天没有找到Repository 目录在哪里 。而且不知道> svnadmin dump path/to/old-repo > dumpfile 怎么执行。
Repository目录指的是你的版本库的目录;
svnadmin dump path/to/old-repo > dumpfile 在命令行下执行。
还是有点小不懂,能说明白些吗?版本库的目录是什么? 我运行 svnadmin dump path 不可以啊
svnadmin dump path/to/old-repo > dumpfile 在命令行下执行。
SVN===》SVN服务器迁移MySQL数据库迁移
一、SVN迁移服务器步骤
将SVN从一台服务器(源服务器)迁移到另一台服务器(新服务器)上,操作分为两步
- 按照源服务器的版本,在新服务器安装同样的版本的SVN
- 同步源服务器的SVN库到新服务器上
二、老服务器上安装部署SVN步骤(迁移不做此操作,只是补充SVN的部署流程)
#1.下载安装
yum install subversion
svn --version 查看版本
#2.创建仓库目录
mkdir -p /home/data/svn/
cd /home/data/svn/
#3.创建SVN仓库
svnadmin create axhub
#4.配置SVN
(svnserve.conf)
cd /home/data/svn/axhub/conf
vim svnserve.conf
#匿名访问的权限,可以是read,write,none,默认为read
anon-access=none
#使授权用户有写权限
auth-access=write
#密码数据库的路径
password-db=passwd
#访问控制文件
authz-db=authz
#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字
realm = /home/data/svn/axhub
(passwd文件)
该文件由一个[users]配置段组成,格式:<用户名>=<口令> 注:口令为未经过任何处理的明文。
cd /home/data/svn/axhub/conf
vim passwd (可以设置多个用户)
[users]
admin=admin
(authz文件)
该文件由[groups]配置段和若干版本库路径权限段组成
[groups]配置段格式:<用户组>=<用户列表>,用户列表由若干个用户组或用户名构成,用户组或用户名之间用逗号","分隔,引用用户组时要使用前缀"@"
cd /home/data/svn/axhub/conf
vim authz
[groups]
[/]
admin=rw
* =
[/axhub]
admin=rw
* =
总结:
SVN管理员可以通过这3个配置文件设置svnserve服务的用户名口令,以及对版本库路径的访问权限。这些配置文件保存后就立即生效,不需要重启svnserve服务。
#5.启动svn
svnserve -d -r /home/data/svn/axhub/
#6.停止svn
killall svnserve
三、新服务器上安装部署SVN
#1.下载安装SVN
yum install subversion
svn --version 查看版本
四、迁移
SVN的迁移: ( 建议迁移的时候,将所有源库SVN所有账号的权限改成只读,或者停掉SVN服务器 )
迁移方法两种:
- dump出源机器SVN的代码库,然后load到新服务器上去。
- 使用 svnsync 直接同步源机器代码库。(推荐使用)
(第一种方法存在隐患:dump完,如果文件很大,几十个G,时间会很长)
1.采用dump迁移SVN代码库
#1.dump 出源机器的SVN代码库: ( 依照SVN数据量的大小,时间可能会很长 )
svnadmin dump 库目录 > 111.dump
#2.使用 scp(secure copy)命令,将dump出来的文件传到 新机器上
scp -r /home/data/svn/111.dump root@111.111.111.111:/home/data/svn
#3.在新机器上创建仓库
svnadmin create /home/data/svn/axhub
#4.将 dump 文件 load 进 新服务的仓库中
svnadmin load /home/data/svn/axhub < 111.dump
#5.启动新机器的SVN服务
svnserve -d -r /home/data/svn/axhub/
#6.查看 SVN服务是否 启动
ps -ef|grep svn|grep -v grep
#检测svn 端口
netstat -ln |grep 3690
#补充: SVN服务的默认启动端口是 3690, 可以通过 svnserve --listen-port 8899 -d -r axhub(SVN仓库路径)指定端口启动
2.使用 svnsync 迁移SVN代码库 ( 推荐使用这种方式 )
#1.在新服务器上创建代码仓库
svnadmin create /home/data/svn/axhub
#2.修改新建仓库中hooks 下的 名为 pre-revprop-change 的文件
cd /home/data/svn/axhub/hooks
cp pre-revprop-change.tmpl pre-revprop-change
vim pre-revprop-change
最后一行将exit()改成exit 0
#3.初始化
svnsync init file:///home/data/svn/axhub http://139.224.224.108:82/svn/axhub
( svnsync init file:// 新机器仓库目录路径 源服务器的IP(可以通过 http 协议,还可以通过svn协议) )
这块需要输入密码验证,新服务器的密码 源服务器SVN的账号密码,此账号应该有仓库所有代码的读取权限
#4.同步
svnsync sync file:///home/data/svn/axhub
#5.等待同步完成,启动SVN服务器即可
五、MySQL数据库迁移
- 停掉原有服务防止在迁移过程中产生数据差异
- 在原数据库上进行备份:mysqldump -uroot -p --all-databases --single-transaction -q -E -R --triggers >bak.sql
- 将备份文件scp到目标服务器
- 在目标服务器部署数据库
- 导入备份数据:mysql -uroot -p < bak.sql
以上是关于SVN 服务器迁移的主要内容,如果未能解决你的问题,请参考以下文章