SVN主从同步功能实现

公司业务需求,对SVN要实现异地全量备份外,还需要在本地服务器进行备份,由于SVN库太大了,
压缩后仍然有100G的大小,公司的小水管网络是没有办法天天实现全量备份的,所以每天的全量备份
是可以放弃了。
后面想采用每周六全量、其他周一至周五增量的备份方式,这种方式应该也是可行的!
后来在网上查了相关资料,发现SVN自带有主从同步库的功能,相当于在备份服务器搭建一个SVN从库,
可以随时同步主库的内容,用起来还挺方便,下面就介绍这种方式!

  实验环境:

    主SVN库:103.17.243.17

    从SVN库:10.101.111.210

    操作系统: CentOS Linux release 7.2.1511 (Core)

  一、在备份机上,安装SVN  

    具体的安装方法,可以参考之前的文章《Centos 7 安装和配置SVN

    这里只需要安装SVN即可,不需要重新配置,因为配置文件从主库复制就可以了,下面会说明!

  二、在备份机上,准备SVN主从同步的基础  

2.1 在备份机上,创建准备同步的SVN备用库

[root@status svnback]#mkdir /data/svnback && cd /data/svnback
[root@status svnback]#svnadmin create sample

2.2 在备份机上,修改刚刚创建的SVN库里的钩子脚本pre-revprop-change

[root@status svnback]#cd sample/hooks
[root@status svnback]#cp pre-revprop-change.tmpl pre-revprop-change
[root@status svnback]#chmod +x pre-revprop-change
[root@status svnback]#vim pre-revprop-change
将最后一行改为exit 0,或者直接把该文件清空

  三、在备份机上,把主库的相关配置文件复制到从库对应位置  

3.1 在备份机上,复制主库的SVN配置文件

[root@status svnback]#scp -r -p 103.17.243.17:/etc/httpd/conf.d/svn.conf \
/etc/httpd/conf.d/

    注意:如果SVN本地存放路径不一样,需要修改配置文件,如:

    修改配置文件

3.2 在备份机上,复制主库的对应SVN的账户密码文件

[root@status svnback]#scp -r -p 103.17.243.17:/data/svn/sample/.htpasswd \
/data/svnback/sample/

3.3 在备份机上,复制主库的对应的SVN的权限控制文件

[root@status svnback]#scp -r -p 103.17.243.17:/data/svn/sample/conf/authz \
/data/svnback/sample/conf/
[root@status svnback]#scp -r -p 103.17.243.17:/data/svn/sample/conf/svnserve.conf \
/data/svnback/sample/conf/

  四、在备份机上,开始同步主库的SVN数据  

4.1 在备份机上,初始化同步设定

[root@status svnback]#svnsync init file:///data/svnback/sample \
http://103.17.243.17/svn/sample

    命令说明:svnsync init 本地SVN库的URL  主库的URL
        本地SVN库的URL:由于是在备份机执行,直接用‘file:///’这种格式的URL即可。
         主库的URL主库的URL地址,也就是你需要备份的SVN源地址。

    执行命令后,进入交互式命令行模式:

        a) Password for ‘root’:输入主库服务器的root密码,这里没有指定用户,默认为‘root’用户!

Password for ‘root’

        b) Username:输入访问SVN的账户,就是http访问SVN时的账号
             Password for ‘xxxx’:输入访问SVN的对应的密码

输入访问SVN的对应的密码

         c) Store password unencrypted (yes/no)? :是否存储账号密码,我这里选择yes

是否存储账号密码

        d) 初始化成功

初始化成功

4.2 在备份机上,开始同步数据

[root@status svnback]#svnsync sync file:///data/svnback/sample

开始同步数据

4.3 更改备用SVN库的属主属组,重启httpd服务

[root@status svnback]#chown -R apache:apache sample
[root@status svnback]#systemctl restart httpd

  五、测试SVN主从库的同步结果  

5.1、在本地电脑上check out备份机的SVN库

check out备份机的SVN库
SVN库

5.2 对比主库和备用库的SVN版本号知否一致

 SVN版本号

SVN版本号

        可以发现,主库和备用库的SVN版本已经保持一致!

5.3 主库添加测试文件

主库添加测试文件

5.4 备用库开启同步

[root@status OA2.0]# svnsync sync file:///data/svnback/GovCar

备用库开启同步

5.5、更新备用库的SVN内容

更新备用库的SVN内容

至此,SVN库主从同步搭建完成!

Jimmy's Blog ,版权所有丨如未注明,均为原创丨本网站采用BY-NC-SA协议进行授权,转载请注明转自:https://www.xjimmy.com/svn-sync.html

2 thoughts on “SVN主从同步功能实现”

  1. lipeng

    从能更新最新版本 但是从库上没有文件 怎么解?

    1. 啥意思,没有明白你的问题?

Leave a Comment