snv备份有三种:svn dump 、 svn hotcopy 、svnsync
了解了三种备份机制后建议使用svnsync备份
配置步骤:
master:192.168.0.100
backup:192.168.0.200
1.安装svn
yum 安装或者使用源码安装;
这里使用yum ---> yum install subversion -y;使用rpm -ql subversion查看安装文件位置;
2.在master上建立仓库 ----> svnadmin create /data/svn/master
3.在backup上建立备份仓库 ---> svnadmin create /data/svn/backup
4.创建用户并授权(master)
执行了svnadmin create /data/svn/master 命令后会在/data/svn/master目录下生成conf、hook、db等文件;conf文件是配置用户和权限这些的
authz ----> 访问权限
[/] ---> 即svn的主目录
user = rw ---> 读写权限
passwd ---> 用户名和密码
在尾行创建一个用户和密码;
user = password
svnserve.conf ----> 服务配置,实验参数配置如下:
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = /data/svn/master
5.backup的master创建授权一样即可,但是要将realm = /data/svn/master 修改为 realm = /data/svn/backup;
6.在bckup /data/svn/backup/hooks下
cp pre-revprop-change.tmpl pre-revprop-change
清空并添加如下内容:
#!/bin/bash
exit 0
chmod +x pre-revprop-change
7.backup执行初始化仓库;
svnsync init svn://192.168.0.200 svn://192.168.0.100 --username user --password password
执行后出现如下提示表示执行成功
Copied properties for revision 0.
8.于master同步版本库;
svnsync sync svn://192.168.0.200 --username user --password password
9.提交更新实时同步;
master主机的/data/svn/master/hooks目录
cp pre-revprop-change.tmpl pre-revprop-change;
cp post-commit.tmpl post-commit;
chmod +x post-commit pre-revprop-change
清空 post-commit;并添加如下内容:
#!/bin/bash
svnsync sync --non-interactive svn://192.168.0.200 --username user --password password
#--non-interactive 提交更新时,执行同步,不进行交换;
至此svn的同步就做好了;在master上提交代码,backup上实时同步;其实原理很简单,当用户想master提交代码的时候 master上的svn利用钩子函数将用户提交的代码同步至backup上;