Subversion库迁移及备份方案
上一篇 / 下一篇 2009-11-11 17:10:37 / 个人分类:SVN
Subversion库迁移及备份方案51Testing软件测试网 OJ:~/w-_` }
51Testing软件测试网r;j)f5o^tB8N-j%b
在做迁移操作前,请停止对svn进行提交操作。
&el(Q hl*L)j!{8T01. 迁移方案(采用dump -load方案):51Testing软件测试网9A6w-t.`7G F
!E(u'N4?m8`~0源SVN服务器:192.168.1.200,Windows服务器
WC'Kd4n0
*m2o`v&pU"R0目标SVN服务器:192.168.1.201,Windows服务器。采用CollabNet Subversion Server,假定subversion安装在D:\Program Files\CollabNet Subversion Server上,SVN的Repository为d:\Subversion\svnbackup51Testing软件测试网#W k qKFmj [ Y
/vy;sa||2B0N2Q0也即Windows服务中,可执行文件的路径为:
-rO4^7u} } v}0mut"X051Testing软件测试网Le7D%g9KwE%a
“d:\Program Files\CollabNet Subversion Server\svnserve.exe” –service -r “d:\Subversion\svnbackup” –listen-port “3690″51Testing软件测试网5ut^Jgl"p-R!j
51Testing软件测试网+yd3G?:k"j2rw
由于目前在subversion服务器上实际上只有svn://192.168.1.200/rd目录下才有内容,因此只需要迁移svn://192.168.1.201/rd下的内容,步骤如下:51Testing软件测试网.N^}VB#o
51Testing软件测试网"T.J7njB8[ q
1、 在源服务器192.168.1.200上执行dump操作
*EeYMk7BE2T;i#M051Testing软件测试网4\7G;p4h(q~.o
注意此处实际上把repository中所有的目录都备份了,需要在load时候采用svndumpfilter命令过滤需要的目录。
!K6Mbf%JQu~.qe051Testing软件测试网W Td+J-F
svnadmin dump D:\Subversion\svnworkspace\bak >svn_all_20080520.dump51Testing软件测试网)h&`Dg$aVT'u&^
51Testing软件测试网oh"Syv d|;?1D
2、 在192.168.1.201上创建svnbackup Repository
7Y:C1Sa[4et g-Z,h%_051Testing软件测试网s b GE(]
svnadmin create d:\Subversion\svnbackup51Testing软件测试网-gI,Q*x:}&F?5B*g
/B S \F7bqB2p03、 下载一个windows 版本gnu 工具(例如http://sourceforge.net/projects/gnuwin32/),主要是使用cat方法
.p1Q IXXz@S:R5gF0
_6Xx6`Okd04、 将dump文件拷贝到上并执行load操作
:BWyG.b}[/LY0
1O7FC1tI(`uy d:a0 cat svn_all_20080520.dump | svndumpfilter --include:rd >svn_rd_20080520.dump
'o2MI5L(Tx pW'w ^u0
9B"s(r'Sdj05、 执行svnadmin load
qabU_"MB4p0
k`&`N/i9Bq] I0 svnadmin load d:\Subversion\svnbackup < svn_rd_20080520.dump51Testing软件测试网+`"sX%A%D\
}h-j/N6rk9paGL06、 在192.168.1.201上配置svnserve.conf、passwd、authz文件
3o1T'y`0y O02. 迁移方案(采用svnsync方案)
u2y!D1^J.vc0
Yy4e)Rd_?0从subversion 1.4.4开始,提供了svnsync命令,可用于Subversion的库迁移和备份,这里我们用于备份操作的初始化同步。
9m6mqqzJ4T6l0
:v8~-]~dc/b,j0假定从源服务器192.168.1.201备份到192.168.1.8851Testing软件测试网_v|+s5ZCc3zs)o
|)~1L7F:nkTv0SVN服务器:192.168.1.201,Windows服务器,采用CollabNet Subversion Server,假定subversion安装在D:\Program Files\CollabNet Subversion Server上,SVN的Repository为d:\Subversion\svnbackup。51Testing软件测试网M8`jq1^
X9h0]U'N0备份服务器: 192.168.1.88,Redhat As 4服务器
XqxU E2a`XMX*W0
X"L k:l!A ];MT0采用svnsync进行数据迁移,方法如下:
W+b;Q-?_)vF0
R aV h+IG5k~ Sj01、 在备份服务器192.168.1.88上创建源服务器192.168.1.201上对应的备份库目录
qdBy6QzZ&}9m0
/^)j RK v+c0mkdir /opt/subversion51Testing软件测试网fZw'qB$n|g;Z#qW
51Testing软件测试网8bO}'oV+h o
svnadmin create /opt/subversion/svnbackup51Testing软件测试网L;KE9} z b&g2o
51Testing软件测试网2B)P.{ A0|&~K
2、在备份服务器192.168.1.88上启用钩子文件
y(f~(tZ051Testing软件测试网#P!P;Lh0\N5T
cd /opt/subversion/svnbackup/hooks
7{lr [?\ r;t3y9T0
#@$PA*`}7_e/hT0echo “#!/bin/sh”> pre-revprop-change
T)f*X9v.su'Q0
;lS7o)v1KO F0chmod 755 pre-revprop-change
C x2s-K,o&N$n-L#zvQ0
`)Cq#`9YV(Sxp03、在备份服务器192.168.1.88上运行svnsync init命令51Testing软件测试网8]6i Tlg Frp} wF
@yCF!h0svnsync init file:////opt/subversion/svnbackup svn://192.168.1.201 –username username –password password
{wyA8]0
U7U0Q:wDG6~0注意,svnsync的语法为:svnsync init DEST SOURCE51Testing软件测试网W"?bM u:T_
"r]:v&S;t!x7u@-i-GE04、在备份服务器192.168.1.88上执行同步操作
9N Nzvf7p8W1G|0
4\9C R!xt5S O0svnsync sync file:////opt/subversion/svnbackup
+kG-EI{q h7i0
cU!Sk,@#A4A0由于svnsyc只能同步整个svn库,并不能同步指定的项目,因此建议迁移时候使用dump-load方案,备份时候采用svnsync方案
!p1zS Wv03. 备份方案:51Testing软件测试网DYS#} j GL*^|!z
51Testing软件测试网5k'?CXU2[
为保证svn服务器的安全,由脚本每天定时对svn库进行备份,以保证svn库的安全性。备份仍然采用svnsync来完成。
Z-^6}}3~5S)j0
#ZV!k4o1Kla01. 在192.168.1.88 上安装subversion 服务器端
|B ]a3BNq]0
I.ylmCT4`02. 在192.168.1.88上创建备份用户帐号svnsync,以供192.168.1.201能够以此帐号实时把变更的同步到192.168.1.88上51Testing软件测试网&p)Xjt"P a"Q
$qwe sQB"W/w0配置文件svnserve.conf:51Testing软件测试网S2NyDb0hyp.PIdb8R
51Testing软件测试网/jIik,qD
[general]
#PX-Ps:s Ip'P051Testing软件测试网)hma1@ub
anon-access = none
:Jcypt7M6E m#eC051Testing软件测试网\)HPk1~7~)sH G
auth-access = write51Testing软件测试网njf8\-I4| W
51Testing软件测试网%?4v`]G
password-db = passwd
W7Op(FD/?8C051Testing软件测试网,r8n+Lr!Mj}2f;x&]
authz-db = authz
jI#Za5b;E,a051Testing软件测试网.jx;T5f8^Ks t
配置文件passwd:
| qvEY%z ]GG051Testing软件测试网"H*^-Tr4T] |D
svnsync=svnsync
2X"r2t0v$sq0
ZL c8I8k)@'Qoj0配置文件authz
6pJ`)wT5I0
+x&ar x;[+g6j0[groups]
c8x&w-B^ a+|UVh0
hO6~hkYF0developer = svnsync51Testing软件测试网'N5[)~)i0}Wf G
d:F&]4fl#I6D\0[/]51Testing软件测试网 i+GHM[s3o(Y
51Testing软件测试网!Lv*w}j4p @*B
@developer=rw51Testing软件测试网Q%br Gp`,K1Y#Jb
8e8j~*u%p}r0* =51Testing软件测试网![ }Bq2Y^
51Testing软件测试网,hn[Z4NS)W6oD
3. 在备份机上开启iptables的3690端口51Testing软件测试网 q@:n1T*d
51Testing软件测试网*Hlk:z6Hn['M-G#H
4. 在备份机192.168.1.88上创建备份库目录
%c;^*y&C5u0Q-S&sW}0
{ PnaK$hR8k0svnadmin create /opt/subversion/svnbackup51Testing软件测试网{T#M t/e b
51Testing软件测试网r;j)f5o^tB8N-j%b
在做迁移操作前,请停止对svn进行提交操作。
&el(Q hl*L)j!{8T01. 迁移方案(采用dump -load方案):51Testing软件测试网9A6w-t.`7G F
!E(u'N4?m8`~0源SVN服务器:192.168.1.200,Windows服务器
WC'Kd4n0
*m2o`v&pU"R0目标SVN服务器:192.168.1.201,Windows服务器。采用CollabNet Subversion Server,假定subversion安装在D:\Program Files\CollabNet Subversion Server上,SVN的Repository为d:\Subversion\svnbackup51Testing软件测试网#W k qKFmj [ Y
/vy;sa||2B0N2Q0也即Windows服务中,可执行文件的路径为:
-rO4^7u} } v}0mut"X051Testing软件测试网Le7D%g9KwE%a
“d:\Program Files\CollabNet Subversion Server\svnserve.exe” –service -r “d:\Subversion\svnbackup” –listen-port “3690″51Testing软件测试网5ut^Jgl"p-R!j
51Testing软件测试网+yd3G?:k"j2rw
由于目前在subversion服务器上实际上只有svn://192.168.1.200/rd目录下才有内容,因此只需要迁移svn://192.168.1.201/rd下的内容,步骤如下:51Testing软件测试网.N^}VB#o
51Testing软件测试网"T.J7njB8[ q
1、 在源服务器192.168.1.200上执行dump操作
*EeYMk7BE2T;i#M051Testing软件测试网4\7G;p4h(q~.o
注意此处实际上把repository中所有的目录都备份了,需要在load时候采用svndumpfilter命令过滤需要的目录。
!K6Mbf%JQu~.qe051Testing软件测试网W Td+J-F
svnadmin dump D:\Subversion\svnworkspace\bak >svn_all_20080520.dump51Testing软件测试网)h&`Dg$aVT'u&^
51Testing软件测试网oh"Syv d|;?1D
2、 在192.168.1.201上创建svnbackup Repository
7Y:C1Sa[4et g-Z,h%_051Testing软件测试网s b GE(]
svnadmin create d:\Subversion\svnbackup51Testing软件测试网-gI,Q*x:}&F?5B*g
/B S \F7bqB2p03、 下载一个windows 版本gnu 工具(例如http://sourceforge.net/projects/gnuwin32/),主要是使用cat方法
.p1Q IXXz@S:R5gF0
_6Xx6`Okd04、 将dump文件拷贝到上并执行load操作
:BWyG.b}[/LY0
1O7FC1tI(`uy d:a0 cat svn_all_20080520.dump | svndumpfilter --include:rd >svn_rd_20080520.dump
'o2MI5L(Tx pW'w ^u0
9B"s(r'Sdj05、 执行svnadmin load
qabU_"MB4p0
k`&`N/i9Bq] I0 svnadmin load d:\Subversion\svnbackup < svn_rd_20080520.dump51Testing软件测试网+`"sX%A%D\
}h-j/N6rk9paGL06、 在192.168.1.201上配置svnserve.conf、passwd、authz文件
3o1T'y`0y O02. 迁移方案(采用svnsync方案)
u2y!D1^J.vc0
Yy4e)Rd_?0从subversion 1.4.4开始,提供了svnsync命令,可用于Subversion的库迁移和备份,这里我们用于备份操作的初始化同步。
9m6mqqzJ4T6l0
:v8~-]~dc/b,j0假定从源服务器192.168.1.201备份到192.168.1.8851Testing软件测试网_v|+s5ZCc3zs)o
|)~1L7F:nkTv0SVN服务器:192.168.1.201,Windows服务器,采用CollabNet Subversion Server,假定subversion安装在D:\Program Files\CollabNet Subversion Server上,SVN的Repository为d:\Subversion\svnbackup。51Testing软件测试网M8`jq1^
X9h0]U'N0备份服务器: 192.168.1.88,Redhat As 4服务器
XqxU E2a`XMX*W0
X"L k:l!A ];MT0采用svnsync进行数据迁移,方法如下:
W+b;Q-?_)vF0
R aV h+IG5k~ Sj01、 在备份服务器192.168.1.88上创建源服务器192.168.1.201上对应的备份库目录
qdBy6QzZ&}9m0
/^)j RK v+c0mkdir /opt/subversion51Testing软件测试网fZw'qB$n|g;Z#qW
51Testing软件测试网8bO}'oV+h o
svnadmin create /opt/subversion/svnbackup51Testing软件测试网L;KE9} z b&g2o
51Testing软件测试网2B)P.{ A0|&~K
2、在备份服务器192.168.1.88上启用钩子文件
y(f~(tZ051Testing软件测试网#P!P;Lh0\N5T
cd /opt/subversion/svnbackup/hooks
7{lr [?\ r;t3y9T0
#@$PA*`}7_e/hT0echo “#!/bin/sh”> pre-revprop-change
T)f*X9v.su'Q0
;lS7o)v1KO F0chmod 755 pre-revprop-change
C x2s-K,o&N$n-L#zvQ0
`)Cq#`9YV(Sxp03、在备份服务器192.168.1.88上运行svnsync init命令51Testing软件测试网8]6i Tlg Frp} wF
@yCF!h0svnsync init file:////opt/subversion/svnbackup svn://192.168.1.201 –username username –password password
{wyA8]0
U7U0Q:wDG6~0注意,svnsync的语法为:svnsync init DEST SOURCE51Testing软件测试网W"?bM u:T_
"r]:v&S;t!x7u@-i-GE04、在备份服务器192.168.1.88上执行同步操作
9N Nzvf7p8W1G|0
4\9C R!xt5S O0svnsync sync file:////opt/subversion/svnbackup
+kG-EI{q h7i0
cU!Sk,@#A4A0由于svnsyc只能同步整个svn库,并不能同步指定的项目,因此建议迁移时候使用dump-load方案,备份时候采用svnsync方案
!p1zS Wv03. 备份方案:51Testing软件测试网DYS#} j GL*^|!z
51Testing软件测试网5k'?CXU2[
为保证svn服务器的安全,由脚本每天定时对svn库进行备份,以保证svn库的安全性。备份仍然采用svnsync来完成。
Z-^6}}3~5S)j0
#ZV!k4o1Kla01. 在192.168.1.88 上安装subversion 服务器端
|B ]a3BNq]0
I.ylmCT4`02. 在192.168.1.88上创建备份用户帐号svnsync,以供192.168.1.201能够以此帐号实时把变更的同步到192.168.1.88上51Testing软件测试网&p)Xjt"P a"Q
$qwe sQB"W/w0配置文件svnserve.conf:51Testing软件测试网S2NyDb0hyp.PIdb8R
51Testing软件测试网/jIik,qD
[general]
#PX-Ps:s Ip'P051Testing软件测试网)hma1@ub
anon-access = none
:Jcypt7M6E m#eC051Testing软件测试网\)HPk1~7~)sH G
auth-access = write51Testing软件测试网njf8\-I4| W
51Testing软件测试网%?4v`]G
password-db = passwd
W7Op(FD/?8C051Testing软件测试网,r8n+Lr!Mj}2f;x&]
authz-db = authz
jI#Za5b;E,a051Testing软件测试网.jx;T5f8^Ks t
配置文件passwd:
| qvEY%z ]GG051Testing软件测试网"H*^-Tr4T] |D
svnsync=svnsync
2X"r2t0v$sq0
ZL c8I8k)@'Qoj0配置文件authz
6pJ`)wT5I0
+x&ar x;[+g6j0[groups]
c8x&w-B^ a+|UVh0
hO6~hkYF0developer = svnsync51Testing软件测试网'N5[)~)i0}Wf G
d:F&]4fl#I6D\0[/]51Testing软件测试网 i+GHM[s3o(Y
51Testing软件测试网!Lv*w}j4p @*B
@developer=rw51Testing软件测试网Q%br Gp`,K1Y#Jb
8e8j~*u%p}r0* =51Testing软件测试网![ }Bq2Y^
51Testing软件测试网,hn[Z4NS)W6oD
3. 在备份机上开启iptables的3690端口51Testing软件测试网 q@:n1T*d
51Testing软件测试网*Hlk:z6Hn['M-G#H
4. 在备份机192.168.1.88上创建备份库目录
%c;^*y&C5u0Q-S&sW}0
{ PnaK$hR8k0svnadmin create /opt/subversion/svnbackup51Testing软件测试网{T#M t/e b