简介
网上的svn热备教程多为主备同步,使用一台从服务器同步主服务器,使实现在主服务器提交修改自动备份到从服务器,而无法把从服务器中的操作同步到主服务器,本文是用于实现svn双机互备即双向同步的教程。
1 部署说明
1.1 环境准备
svn的版本需为1.4以上
| IP地址 | 操作系统 | 软件版本 |
|---|---|---|
| 192.168.15.12,192.168.15.11 | Centos 7.8 | subversion-1.7.14-16.el7.x86_64 |
1.2 初始配置
1.2.1 创建库
[root@localhost]# mkdir -p /opt/svn/repositories
[root@localhost]# svnadmin create /opt/svn/repositories
1.2.2 修改配置文件
[root@localhost]# cd /opt/svn/repositories/
- 修改svnserve.conf
在末尾添加
anon-access=none
auth-access=write
password-db=passwd
authz-db=authz
- 修改passwd
在[user] 标签下面加上账号密码(格式:账号 = 密码)
[users]
user = 123456
- 修改authz
[groups]下添加admin = user(格式:用户组 = 用户)
[/]下加@admin = rw(格式:@用户组 = 权限)
1.3 启动svn
[root@localhost]# svnserve -d -r /opt/svn/repositories/
(没指明具体哪台主机的部分,两台都要操作)
2 互相同步
2.1 配置hooks
[root@localhost]# cd /opt/svn/repositories/hooks
[root@localhost]# cp pre-revprop-change.tmpl pre-revprop-change
[root@localhost]# vi pre-revprop-change
把末尾的exit 1 改为exit 0
[root@localhost]# chmod +x pre-revprop-change
2.2 svnsync初始化
在主机192.168.15.11执行
[root@localhost]# svnsync init svn://192.168.15.12 svn://192.168.15.11
在主机192.168.15.12执行
[root@localhost]# svnsync init svn://192.168.15.11 svn://192.168.15.12
root’s password:直接回车
user:user
password:123456
Store password unencrypted(yes/no)? yes
2.3 自动同步
在post-commit中添加同步命令实现提交后自动同步
[root@localhost]# cd /opt/svn/repositories/hooks
[root@localhost]# cp post-commit.tmpl post-commit
[root@localhost]# chmod 755 post-commit
[root@localhost]# vi post-commit
注释掉mailer.py commit "REV" /path/to/mailer.conf,
192.168.15.11主机添加以下两句
svnsync sync --non-interactive svn://192.168.15.12 --username user --password 123456
svn propset --revprop -r0 svn:sync-last-merged-rev $REV svn://192.168.15.11
192.168.15.12主机添加以下两句
svnsync sync --non-interactive svn://192.168.15.11 --username user --password 123456
svn propset --revprop -r0 svn:sync-last-merged-rev $REV svn://192.168.15.12