SVN库迁移及备份方法详解
本节向大家简单讲解一下SVN库迁移及备份方案,在学习SVN的过程中难免会遇到SVN库的问题,在这里和大家分享一下SVN库迁移及备份方面的知识,希望对你的学习有所帮助。
在做迁移操作前,请停止对svn进行提交操作。
1.SVN库迁移方案(采用dump-load方案):
源SVN服务器:192.168.1.200,Windows服务器
目标SVN服务器:192.168.1.201,Windows服务器。采用CollabNetSubversionServer,假定subversion安装在D:\ProgramFiles\CollabNetSubversionServer上,SVN的Repository为d:\Subversion\svnbackup
也即Windows服务中,可执行文件的路径为:“d:\ProgramFiles\CollabNetSubversionServer\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命令过滤需要的目录。
svnadmindumpD:\Subversion\svnworkspace\bak>svn_all_20080520.dump
2、在192.168.1.201上创建svnbackupRepository
svnadmincreated:\Subversion\svnbackup
3、下载一个windows版本gnu工具(例如http://sourceforge.net/projects/gnuwin32/),主要是使用cat方法
4、将dump文件拷贝到上并执行load操作
catsvn_all_20080520.dump|svndumpfilter--include:rd>svn_rd_20080520.dump5、执行svnadminload
svnadminloadd:\Subversion\svnbackup<svn_rd_20080520.dump6、在192.168.1.201上配置svnserve.conf、passwd、authz文件
2.SVN库迁移方案(采用svnsync方案)
从subversion1.4.4开始,提供了svnsync命令,可用于Subversion的库迁移和备份,这里我们用于备份操作的初始化同步。
假定从源服务器192.168.1.201备份到192.168.1.88
SVN服务器:192.168.1.201,Windows服务器,采用CollabNetSubversionServer,假定subversion安装在D:\ProgramFiles\CollabNetSubversionServer上,SVN的Repository为d:\Subversion\svnbackup。
备份服务器:192.168.1.88,RedhatAs4服务器
采用svnsync进行数据迁移,方法如下:
1、在备份服务器192.168.1.88上创建源服务器192.168.1.201上对应的备份库目录
mkdir/opt/subversion
svnadmincreate/opt/subversion/svnbackup
2、在备份服务器192.168.1.88上启用钩子文件
cd/opt/subversion/svnbackup/hooks
echo“#!/bin/sh”>pre-revprop-change
chmod755pre-revprop-change
3、在备份服务器192.168.1.88上运行svnsyncinit命令
svnsyncinitfile:////opt/subversion/svnbackupsvn://192.168.1.201–usernameusername–passwordpassword
注意,svnsync的语法为:svnsyncinitDESTSOURCE
4、在备份服务器192.168.1.88上执行同步操作
svnsyncsyncfile:////opt/subversion/svnbackup
由于svnsyc只能同步整个svn库,并不能同步指定的项目,因此建议迁移时候使用dump-load方案,备份时候采用svnsync方案
3.SVN库备份方案:
为保证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上创建备份库目录
svnadmincreate/opt/subversion/svnbackup
chown–Rsvnsync:svnsync/opt/subversion/svnbackup
5.按照上述采用svnsync方案的步骤,将库同步到192.168.1.88上,初始化svn库
cd/opt/subversion/svnbackup/hooks
echo“#!/bin/sh”>pre-revprop-change
chmod755pre-revprop-change
svnsyncinitfile:////opt/subversion/svnbackupsvn://192.168.1.201–usernameusername–passwordpassword
svnsyncsyncfile:////opt/subversion/svnbackup
6.在源服务器192.168.1.201上,创建钩子文件,保证192.168.1.201上的变动实时同步到192.168.1.88上:
post-commit
#PropagatethedatatotheremoterepositoryD:\ProgramFiles\CollabNetSubversionServer\svnsyncsynchronize--usernamesvnsync--passwordsvnsyncsvn://192.168.1.88post-rev-changes
#Propagatingchangestotheremoterepository.D:\ProgramFiles\CollabNetSubversionServer\bin\svnsynccopy-revprops--usernamesvnsync--passwordsvnsyncsvn://192.168.1.88$REV4.参考文档: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。本节关于SVN库迁移和备份内容讲解完毕,请关注本节其他相关报道。
转自:http://developer.51cto.com/art/201005/202261.htm