一个人不应该依附在其他人身上,一个人应该首先自力更生。你应该自己能够独立,能够安顿你自己,那你就不会害怕了。你爱你自己的话,别人不能不爱你吧。

Subversion库迁移及备份方案

上一篇 / 下一篇  2009-11-11 17:10:37 / 个人分类:SVN

Subversion库迁移及备份方案51Testing软件测试网Xp/B&l1e
51Testing软件测试网s| DX'I)K7s
在做迁移操作前,请停止对svn进行提交操作。
l9RR9pus@"F5wb01. 迁移方案(采用dump -load方案):51Testing软件测试网Cl9@5fR:Z&iY!W

6tw ^'T:^\4~1t0源SVN服务器:192.168.1.200,Windows服务器51Testing软件测试网 OG w:}^4s:OP

*MWBp0nH.g0目标SVN服务器:192.168.1.201,Windows服务器。采用CollabNet Subversion Server,假定subversion安装在D:\Program Files\CollabNet Subversion Server上,SVN的Repository为d:\Subversion\svnbackup
lQ d/C4`1H051Testing软件测试网 z^3\Ad!b R fdd
也即Windows服务中,可执行文件的路径为:51Testing软件测试网~N2iJT

%jwAJb-s~0“d:\Program Files\CollabNet Subversion Server\svnserve.exe” –service -r “d:\Subversion\svnbackup” –listen-port “3690″51Testing软件测试网2^;G{a"E/|5LU~V6b
51Testing软件测试网&\ ql` _s2km
由于目前在subversion服务器上实际上只有svn://192.168.1.200/rd目录下才有内容,因此只需要迁移svn://192.168.1.201/rd下的内容,步骤如下:
2a(C,y,sX*^051Testing软件测试网V F+m$j(U7C X V^7v
1、 在源服务器192.168.1.200上执行dump操作
{di,Nq4G0
/pS+f/y}`b6~0注意此处实际上把repository中所有的目录都备份了,需要在load时候采用svndumpfilter命令过滤需要的目录。
D"B|ql0
M YO0U#U6v9i0svnadmin dump D:\Subversion\svnworkspace\bak >svn_all_20080520.dump
M{["zXQj?0
D/_7f}h o3S*Y02、 在192.168.1.201上创建svnbackup Repository51Testing软件测试网1c!w2v$?G9yOpL

8~+cZ~@f M0svnadmin create d:\Subversion\svnbackup
1F0k9S t-]0
u}tH.Jg1G[03、 下载一个windows 版本gnu 工具(例如http://sourceforge.net/projects/gnuwin32/),主要是使用cat方法51Testing软件测试网T,fo8}y8i.x'd
51Testing软件测试网6z5hP8|,CQ-?!z
4、 将dump文件拷贝到上并执行load操作51Testing软件测试网+k!@tQVXtlD5{

'[?-NJ)G0        cat svn_all_20080520.dump | svndumpfilter --include:rd >svn_rd_20080520.dump51Testing软件测试网B,EI;PPse
51Testing软件测试网\,w bQ,T8c&PYb
5、 执行svnadmin load
YJb:G-@J0
*X*Y"X EAO0        svnadmin load d:\Subversion\svnbackup < svn_rd_20080520.dump
c.F ZQFW;im9q051Testing软件测试网p W5wb o
6、 在192.168.1.201上配置svnserve.conf、passwd、authz文件
,p?'ew _O5O9m02. 迁移方案(采用svnsync方案)51Testing软件测试网k'L[!G2XM2@,u
51Testing软件测试网]x?C(^A Akks6z
从subversion 1.4.4开始,提供了svnsync命令,可用于Subversion的库迁移和备份,这里我们用于备份操作的初始化同步。
!Vs`BjS!U0
ZN ^V*jAu8k B0假定从源服务器192.168.1.201备份到192.168.1.88
1gVJ+WaS,n051Testing软件测试网*K8_ R6e4Jt'pH1xC}
SVN服务器:192.168.1.201,Windows服务器,采用CollabNet Subversion Server,假定subversion安装在D:\Program Files\CollabNet Subversion Server上,SVN的Repository为d:\Subversion\svnbackup。
&x:{1v3LKSP#Y;F051Testing软件测试网4f-X b&ec*Z\])j7K#o
备份服务器: 192.168.1.88,Redhat As 4服务器51Testing软件测试网5s5Aq5A9Js)x

Z S mh0uU^3S0采用svnsync进行数据迁移,方法如下:51Testing软件测试网0p$R#paB+mHJD$`

&g*F6D H_ w"q01、 在备份服务器192.168.1.88上创建源服务器192.168.1.201上对应的备份库目录
X C5A:? j+qHh051Testing软件测试网:w&b3D"M:J#T0f
mkdir /opt/subversion
f)\'Y+\ it"\0
.QDV'yp.t7p&]0svnadmin create  /opt/subversion/svnbackup51Testing软件测试网KW+gc2KQ$lh0w

An/V;yOE$XVJbL02、在备份服务器192.168.1.88上启用钩子文件
5hI1E0S#I[0
,`%v%mH$~$h{_Ar0cd  /opt/subversion/svnbackup/hooks51Testing软件测试网l bj%f,Af:HZ
51Testing软件测试网{nyz!W ATq r
echo “#!/bin/sh”> pre-revprop-change
MOVUf#d0
~ gi-AJ/A8n.a0chmod 755 pre-revprop-change
/nIW y!o ?;O%?'V051Testing软件测试网n&M]{wN^1H7u
3、在备份服务器192.168.1.88上运行svnsync init命令51Testing软件测试网Cq)] A9o"qqW

@ j3j:w,A$iP0svnsync init file:////opt/subversion/svnbackup  svn://192.168.1.201 –username username –password password
&e h5`*DW)H,F6D0
{Yk1otZ2\ Lh*u0注意,svnsync的语法为:svnsync init DEST SOURCE51Testing软件测试网(Fl8AFb:leoQS/i9r

3pF[I$XiC ?04、在备份服务器192.168.1.88上执行同步操作51Testing软件测试网ZVH"IY,x
51Testing软件测试网7IT/D"i!Z ^'?P
svnsync sync file:////opt/subversion/svnbackup
!~a?MWi051Testing软件测试网:g6or)r@8G#A
由于svnsyc只能同步整个svn库,并不能同步指定的项目,因此建议迁移时候使用dump-load方案,备份时候采用svnsync方案51Testing软件测试网&`5w]uL a.FK
3. 备份方案:
AO)O#Z*NX8dCv#J0
&Fh^mu0为保证svn服务器的安全,由脚本每天定时对svn库进行备份,以保证svn库的安全性。备份仍然采用svnsync来完成。51Testing软件测试网w%[:{&o+L$}PK.[6s
51Testing软件测试网6Yaia"l*Q
1. 在192.168.1.88  上安装subversion 服务器端
)aw-Sn3f.|0
J3M"o7f$ll02. 在192.168.1.88上创建备份用户帐号svnsync,以供192.168.1.201能够以此帐号实时把变更的同步到192.168.1.88上
)},~g:x$?.O0
k9\H#TK0配置文件svnserve.conf:
NY&j7SOQH/|fB0
T@Ck-]0[general]
^r!UU;T0
I)s0o;a`$};N2u0anon-access = none
*L*HS:@v!j_Z051Testing软件测试网+Z-g g1I]^v Y
auth-access = write51Testing软件测试网#S Z+a;~7hNr N#L{1j^x!Y
51Testing软件测试网u+`xr6pd}
password-db = passwd
/_];k(RK051Testing软件测试网 P:B QT%s:CX
authz-db = authz51Testing软件测试网 rO;^*X^'_,C1OX

n)l${'G t.}K8_m0配置文件passwd:51Testing软件测试网 }F"d&Y){hO {@t

'V'T Q7N0Mk,lF0svnsync=svnsync51Testing软件测试网xr4Rf,y7T)F0`'t.}
51Testing软件测试网6D'?$y"?F
配置文件authz
-O4}"N)T J0
LN[tU5Xf;A0[groups]
0{(mstv;|ofA0
CQV&|l0developer = svnsync51Testing软件测试网t!LV@6?

uO}1e!BxM-V0[/]
SC/a$~*lBN0
"Nh8hlYt*E0@developer=rw51Testing软件测试网$cZ DAWR
51Testing软件测试网G;W!zmj8NxNp
* =51Testing软件测试网cps%u)V/c[D R
51Testing软件测试网 f$Q'c5Bj2Z1L
3. 在备份机上开启iptables的3690端口51Testing软件测试网*} C}"chClg!{[#A3{

9L |)]P\!n04. 在备份机192.168.1.88上创建备份库目录
D4]9}6F m%oSeI`0
z6@*qqU]Qu }0svnadmin create /opt/subversion/svnbackup51Testing软件测试网L X[ jEPOm
51Testing软件测试网0ny@4Mo,t:_7E J3O(m
chown –R svnsync:svnsync  /opt/subversion/svnbackup51Testing软件测试网%H8Cz_ ~6~

7nOU*E_&\,a$cN05. 按照上述采用svnsync方案的步骤,将库同步到192.168.1.88上,初始化svn库
aNV#gA%MY0
glm3mW5W$y3P0cd  /opt/subversion/svnbackup/hooks
;Y#DA\5s*d4_2@N051Testing软件测试网L-[,@^\[c
echo “#!/bin/sh”> pre-revprop-change51Testing软件测试网]c6U"AnC(U

}O0Q l [(I)q.qk0chmod 755 pre-revprop-change
K!v ]!|.oA9l#W&?$F.|s0
&T$IZh;VT&ko0svnsync init file:////opt/subversion/svnbackup  svn://192.168.1.201 –username username –password password
H;k(uD.a.wI:UsW1[ a_0
u*sl/^{,y8V2w0svnsync sync file:////opt/subversion/svnbackup51Testing软件测试网7k |9y^ uv8h/qou
51Testing软件测试网4^[,@4?:m'z? k"A'o
6. 在源服务器192.168.1.201上,创建钩子文件,保证192.168.1.201上的变动实时同步到192.168.1.88上:
'^t:uX#^[x0post-commit
^2i _ed)M-E2S051Testing软件测试网FS;Xc/S.WLY6RJ_
# Propagate the data to the remote repository
4dz`1X`a051Testing软件测试网Q CTVZK}
D:\Program Files\CollabNet Subversion Server\svnsync synchronize --username svnsync --password svnsync  svn:// 192.168.1.88
4T$nA-M/{5D3K&M0gg0
(N7t_*W7f)]o4T0post-rev-changes
#k'w?z-c!D051Testing软件测试网^ {1{$lqlZV,k
# Propagating changes to the remote repository.
0AA ]#H8c8o|0
*E2H0J~&ZC"R*L0D:\Program Files\CollabNet Subversion Server\bin\svnsync copy-revprops --username svnsync --password svnsync  svn:// 192.168.1.88 $REV 51Testing软件测试网jr(FHkn!F+{B

V$gE!Zb4P!Z)q04. 参考文档:51Testing软件测试网9c,wq!Pjz4n

Y5@'^rf)d$@0http://blog.notreally.org/articles/2006/11/30/setting-up-a-subversion-mirror-repository-using-svnsync/
(KJyM Gp l Y0
9K'X-^-J]k0

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar