IT星球论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 250|回复: 0

Subversion库迁移及备份方案

[复制链接]

1997

主题

1

好友

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

优秀会员 助人为乐 辛勤工作 技术精英 多才多艺 优秀班竹 灌水天才 星球管理 宣传大使 灌水之王 财富勋章 版主勋章 动漫勋章 勤奋会员 论坛精英 PS高手 心 8 闪游皮肤 双鱼座 8★8➹ 志愿者 乖

发表于 2015-11-5 14:02:10 |显示全部楼层
Subversion库迁移及备份方案
在做迁移操作前,请停止对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 [url=]file:////opt/subversion/svnbackup[/url]  svn://192.168.1.201 –username username –password password
注意,svnsync的语法为:svnsync init DEST SOURCE
4、在备份服务器192.168.1.88上执行同步操作
svnsync sync [url=]file:////opt/subversion/svnbackup[/url]
由于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 [url=]file:////opt/subversion/svnbackup[/url]  svn://192.168.1.201 –username username –password password
svnsync sync [url=]file:////opt/subversion/svnbackup[/url]
6. 在源服务器192.168.1.201上,创建钩子文件,保证192.168.1.201上的变动实时同步到192.168.1.88上:
post-commit# Propagate the data to the remote repositoryD:\Program Files\CollabNet Subversion Server\svnsync synchronize --username svnsync --password svnsync  svn:// 192.168.1.88post-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://www.yeeach.com/2008/05/20/subversion%E5%BA%93%E8%BF%81%E7%A7%BB%E5%8F%8A%E5%A4%87%E4%BB%BD%E6%96%B9%E6%A1%88/

Subversion库迁移及备份方案

该会员没有填写今日想说内容.
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

回顶部