Subversion库迁移及备份方案

Posted 五月 20, 2008

在做迁移操作前,请停止对svn进行提交操作。

1. 迁移方案(采用dump -load方案):

源SVN服务器:192.168.1.200,Windows服务器

目标SVN服务器:192.168.1.201,Windows服务器。采用CollabNet Subversion Server,假定subversion安装在D:/Program Files/CollabNet Subversion Server上,SVN的Repository为d:/Subversion/svnbackup

也即Windows服务中,可执行文件的路径为:

“d:/Program Files/CollabNet Subversion Server/svnserve.exe” –service -r “d:/Subversion/svnbackup” –listen-port “3690″

由于目前在subversion服务器上实际上只有svn://192.168.1.200/rd目录下才有内容,因此只需要迁移svn://192.168.1.201/rd下的内容,步骤如下:

1、 在源服务器192.168.1.200上执行dump操作

注意此处实际上把repository中所有的目录都备份了,需要在load时候采用svndumpfilter命令过滤需要的目录。

svnadmin dump D:/Subversion/svnworkspace/bak >svn_all_20080520.dump

2、 在192.168.1.201上创建svnbackup Repository

svnadmin create d:/Subversion/svnbackup

3、 下载一个windows 版本gnu 工具(例如http://sourceforge.net/projects/gnuwin32/),主要是使用cat方法

4、 将dump文件拷贝到上并执行load操作

        cat svn_all_20080520.dump | svndumpfilter --include:rd >svn_rd_20080520.dump

5、 执行svnadmin load

        svnadmin load d:/Subversion/svnbackup < svn_rd_20080520.dump

6、 在192.168.1.201上配置svnserve.conf、passwd、authz文件

2. 迁移方案(采用svnsync方案)

从subversion 1.4.4开始,提供了svnsync命令,可用于Subversion的库迁移和备份,这里我们用于备份操作的初始化同步。

假定从源服务器192.168.1.201备份到192.168.1.88

SVN服务器:192.168.1.201,Windows服务器,采用CollabNet Subversion Server,假定subversion安装在D:/Program Files/CollabNet Subversion Server上,SVN的Repository为d:/Subversion/svnbackup。

备份服务器: 192.168.1.88,Redhat As 4服务器

采用svnsync进行数据迁移,方法如下:

1、 在备份服务器192.168.1.88上创建源服务器192.168.1.201上对应的备份库目录

mkdir /opt/subversion

svnadmin create  /opt/subversion/svnbackup

2、在备份服务器192.168.1.88上启用钩子文件

cd  /opt/subversion/svnbackup/hooks

echo “#!/bin/sh”> pre-revprop-change

chmod 755 pre-revprop-change

3、在备份服务器192.168.1.88上运行svnsync init命令

svnsync init file:opt/subversion/svnbackup  svn://192.168.1.201 –username username –password password

注意,svnsync的语法为:svnsync init DEST SOURCE

4、在备份服务器192.168.1.88上执行同步操作

svnsync sync file:opt/subversion/svnbackup

由于svnsyc只能同步整个svn库,并不能同步指定的项目,因此建议迁移时候使用dump-load方案,备份时候采用svnsync方案

3. 备份方案:

为保证svn服务器的安全,由脚本每天定时对svn库进行备份,以保证svn库的安全性。备份仍然采用svnsync来完成。

1. 在192.168.1.88  上安装subversion 服务器端

2. 在192.168.1.88上创建备份用户帐号svnsync,以供192.168.1.201能够以此帐号实时把变更的同步到192.168.1.88上

配置文件svnserve.conf

[general]

anon-access = none

auth-access = write

password-db = passwd

authz-db = authz

配置文件passwd

svnsync=svnsync

配置文件authz

[groups]

developer = svnsync

[/]

@developer=rw

* =

3. 在备份机上开启iptables的3690端口

4. 在备份机192.168.1.88上创建备份库目录

svnadmin create /opt/subversion/svnbackup

chown –R svnsync:svnsync  /opt/subversion/svnbackup

5. 按照上述采用svnsync方案的步骤,将库同步到192.168.1.88上,初始化svn库

cd  /opt/subversion/svnbackup/hooks

echo “#!/bin/sh”> pre-revprop-change

chmod 755 pre-revprop-change

svnsync init file:opt/subversion/svnbackup  svn://192.168.1.201 –username username –password password

svnsync sync file:opt/subversion/svnbackup

6. 在源服务器192.168.1.201上,创建钩子文件,保证192.168.1.201上的变动实时同步到192.168.1.88上:

post-commit
# Propagate the data to the remote repository
D:/Program Files/CollabNet Subversion Server/svnsync synchronize --username svnsync --password svnsync  svn:// 192.168.1.88
post-rev-changes
# Propagating changes to the remote repository.
D:/Program Files/CollabNet Subversion Server/bin/svnsync copy-revprops --username svnsync --password svnsync  svn:// 192.168.1.88 $REV  
4. 参考文档:

http://blog.notreally.org/articles/2006/11/30/setting-up-a-subversion-mirror-repository-using-svnsync/

http://whynotwiki.com/How_I_moved_my_code_repository_to_Google_Code

Technorati 标签: svn,subversion,svnsync,备份
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值