SVN主从备份
两套环境:192.168.67.63(主SVN)
192.168.67.60(从SVN)
1.主环境上已经装好SVN并且存在数据仓库/home/svndata在从环境上,新建一/home/svndata_bak仓库:
[[email protected] home]# svnadmin create /home/svndata_bak [[email protected] 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 [[email protected] home]# cd svndata_bak/ [[email protected] 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(注意主从环境上的都要做同样的修改):
[[email protected] hooks]# vim pre-revprop-change.tmpl
#!/bin/sh
exit 0
[[email protected] hooks]# mv pre-revprop-change.tmpl pre-revprop-change
[[email protected] hooks]# chmod +x pre-revprop-change
4.设置完成之后启动svn,这样就得到一个和主环境上相同用户和权限的从SVN库:
svnserve -d -r /home/svndata_bak --listen-port 2396
5.接下来在主环境上操作,如下这一条命令是同步版本:
[[email protected] hooks]# svnsync init svn://192.168.67.60:24396 svn://192.168.67.63:2396 --username limang --password [email protected] --no-auth-cache
复制版本 0 的属性。
[[email protected] hooks]#
6.同步数据:
[[email protected] hooks]# svnsync sync --non-interactive svn://192.168.67.60:2396 --username limang --password [email protected]
已提交版本 1。
复制版本 1 的属性。
传输文件数据......................................................................................................................................................................
已提交版本 2。
复制版本 2 的属性。
传输文件数据.
已提交版本 3。
复制版本 3 的属性。
[[email protected] hooks]#
此时主从数据已经成功同步,在svn浏览器中访问从环境,发现已存在一个一摸一样的仓库。
6.接下来在主环境上使用hooks下的post-commit脚本进行SVN实时同步:
修改post-commit如下:
[[email protected] hooks]# vim post-commit.tmpl
#!/bin/sh
svnsync sync --non-interactive svn://192.168.67.60:2396 --username limang --password [email protected]
[[email protected] hooks]# mv post-commit.tmpl post-commit
[[email protected] hooks]# chmod +x post-commit
此时当主环境上SVN有代码提交时,会触发这个脚本并执行里面的命令实现主从同步。
7.设置SVN开机启动:
SVN主从同步的前提是,主从SVN可以互相访问,所以需要将主从SVN都设置开机启动:
修改/etc/rc.d/rc.local并设置该文件为可执行文件:
[[email protected] hooks]# vim /etc/rc.d/rc.local
#!/bin/bash
svnserve -d -r /home/svndata --listen-port 2396
[[email protected] hooks]# chmod +x /etc/rc.d/rc.local
[[email protected] hooks]#
原文地址:https://www.cnblogs.com/MasterBai2018/p/12067003.html