SVN主从备份

Posted masterbai2018

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SVN主从备份相关的知识,希望对你有一定的参考价值。

SVN主从备份

两套环境:192.168.67.63(主SVN)

                 192.168.67.60(从SVN)

1.主环境上已经装好SVN并且存在数据仓库/home/svndata在从环境上,新建一/home/svndata_bak仓库:

[root@bsdi home]# svnadmin create /home/svndata_bak
[root@bsdi home]# ll
总用量 0
drwx------. 3 bhd  bhd  78 4月  11 2018 bhd
drwxr-xr-x. 6 root root 86 12月  3 13:59 svndata_bak
[root@bsdi home]# cd svndata_bak/
[root@bsdi svndata_bak]# ll
总用量 8
drwxr-xr-x. 2 root root  54 12月  3 13:59 conf
drwxr-sr-x. 6 root root 233 12月  3 13:59 db
-r--r--r--. 1 root root   2 12月  3 13:59 format
drwxr-xr-x. 2 root root 231 12月  3 13:59 hooks
drwxr-xr-x. 2 root root  41 12月  3 13:59 locks
-rw-r--r--. 1 root root 229 12月  3 13:59 README.txt

 

 

2.把主环境上的conf下的authz、passwd、svnserve.conf拷贝覆盖掉从环境上的conf下的文件,覆盖之后注意修改svnserve.conf中的路径设置,并且主从环境上的svnserve.conf中的anon-access都要设置成none:

anon-access = none

auth-access = write

password-db = passwd

authz-db = authz

realm = /home/svndata_bak

 

3.修改hooks文件夹下的pre-revprop-change(注意主从环境上的都要做同样的修改):

[root@bsdi hooks]# vim pre-revprop-change.tmpl

#!/bin/sh

exit 0

[root@bsdi hooks]# mv pre-revprop-change.tmpl pre-revprop-change

[root@bsdi hooks]# chmod +x pre-revprop-change

 

4.设置完成之后启动svn,这样就得到一个和主环境上相同用户和权限的从SVN库:

svnserve -d -r /home/svndata_bak --listen-port 2396

 

5.接下来在主环境上操作,如下这一条命令是同步版本:

[root@bsdi hooks]# svnsync init svn://192.168.67.60:24396 svn://192.168.67.63:2396 --username limang --password pwd123!@ --no-auth-cache

复制版本 0 的属性。

[root@bsdi hooks]#

 

6.同步数据:

[root@bsdi hooks]# svnsync sync --non-interactive svn://192.168.67.60:2396 --username limang --password pwd123!@

已提交版本 1。

复制版本 1 的属性。

传输文件数据......................................................................................................................................................................

已提交版本 2。

复制版本 2 的属性。

传输文件数据.

已提交版本 3。

复制版本 3 的属性。

[root@vasoyn hooks]#

此时主从数据已经成功同步,在svn浏览器中访问从环境,发现已存在一个一摸一样的仓库。

 

6.接下来在主环境上使用hooks下的post-commit脚本进行SVN实时同步:

修改post-commit如下:

[root@bsdi hooks]# vim post-commit.tmpl

#!/bin/sh

svnsync sync --non-interactive svn://192.168.67.60:2396 --username limang --password pwd123!@

[root@bsdi hooks]# mv post-commit.tmpl post-commit

[root@bsdi hooks]# chmod +x post-commit

此时当主环境上SVN有代码提交时,会触发这个脚本并执行里面的命令实现主从同步。

 

7.设置SVN开机启动:

SVN主从同步的前提是,主从SVN可以互相访问,所以需要将主从SVN都设置开机启动:

修改/etc/rc.d/rc.local并设置该文件为可执行文件:

[root@bsdi hooks]# vim /etc/rc.d/rc.local

#!/bin/bash

svnserve -d -r /home/svndata --listen-port 2396

[root@bsdi hooks]# chmod +x /etc/rc.d/rc.local

[root@bsdi hooks]#

以上是关于SVN主从备份的主要内容,如果未能解决你的问题,请参考以下文章

关于Subversion主从备份方式的调整(全量增量脚本)更新

有人可以解释啥是 SVN 平分算法吗?理论上和通过代码片段[重复]

源代码保存在 SVN 存储库中 - 我需要备份啥?

web服务文件更新自动同步数据库主从复制shell脚本实现网站代码备份和mysql备份

Xcode 4.6 的备份代码片段

Mysql的主主备份与主从备份--同步