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 不可以啊

参考技术A Repository目录指的是你的版本库的目录;
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 服务器迁移的主要内容,如果未能解决你的问题,请参考以下文章

SVN===》SVN服务器迁移MySQL数据库迁移

SVN===》SVN服务器迁移MySQL数据库迁移

SVN===》SVN服务器迁移MySQL数据库迁移

如何迁移svn库 简单的dump/load方式

SVN备份迁移

Linux下SVN服务器迁移