使用svnsync实时异地备份配置库

公司机房环境不稳定,领导要求做SVN的实时异地备份,以保证数据安全。备份服务器非公司网络,可远程访问。


前提条件:

1. 备份服务器需要安装和主服务器相同的环境。例如,主服务器的环境为 Apache2.4.15 + SVN1.8.17,那么从服务器也需要设置相同的环境。

2. 主服务器能够通过HTTP远程访问备份服务器的配置库


首先搭建备份服务器环境,以下步骤在备份服务器(192.168.3.2)上执行

1. 安装和配置Apache2.4.15,请参看http://blog.csdn.net/w171066/article/details/51093319  和 http://blog.csdn.net/w171066/article/details/51130324

2. 安装SVN1.8.17,请参看http://blog.csdn.net/w171066/article/details/75019663

3. 添加同步用户,此用户用于读写备份后的配置库

[root@localhost ~]# htpasswd -b /opt/svndata syncuser syncpass
Adding password for user syncuser

[root@localhost ~]# vi /opt/svndata/accessfile

[tools:/]
syncuser = rw


4.创建备份库,创建并编辑pre-revprop-change 和start-commit  hook

[svn@localhost svndata]$ svnadmin create tools

[svn@localhost svndata]$ cd tools/hooks

[svn@localhost svndata]$ vi pre-revprop-change

#!/bin/sh 
USER="$3"
# 限制只有syncuser用户才能提交版本属性修改到此版本库
if [ "$USER" = "syncuser" ]; then exit 0; fi
echo "Only the syncuser user may change revision properties" >&2
exit 1

[svn@localhost svndata]$ vi start-commit

#!/bin/sh 
USER="$2"

# 限制只用syncuser用户才能提交版本修改到版本库
if [ "$USER" = "syncuser" ]; then exit 0; fi

echo "Only the syncuser user may commit new revisions" >&2
exit 1
[svn@localhost svndata]$chmod 775 start_commit pre-revprop-change


回到主服务器,以下步骤在主服务器上进行

在主服务器上必须能够通过http访问备份库.(可能需要关闭备份服务器上的防火墙或者开放相应端口)

1.初始化备份库

[svn@localhost ~]$ svnsync init http://192.168.3.2:8000/opt/svndata/tools  file:///opt/svndata/tools --username syncuser --password syncpass
Copied properties for revision 0.


2.同步备份库

[root@localhost ~]# svnsync sync http://192.168.3.2:8000/opt/svndata/tools  --username syncuser --password syncpass

这个步骤用时很长。执行完这步,配置库就同步过去了。


3.修改post-commit  hook, 以便每次执行完commit动作,都把修改同步到备份库

[svn@localhost ~]$ vi tools/hook/post-commit

#!/bin/sh 
/bin/svnsync synchronize --non-interactive http://192.168.3.2:8000/opt/svndata/tools --username syncuser --password
 syncpass

这样,就配置完成了SVN库的实时备份。




猜你喜欢

转载自blog.csdn.net/w171066/article/details/78614440