svn的自动惹备份都备份服务器{算是主从备份吧}
1:svn的搭建
  http://blog.chinaunix.net/uid-30234663-id-5025404.html
2:svn的自动备份
       192.168.1.129服务器是源代码服务器 svn_server
       192.168.1.166服务器是目标代码服务器  svn_back
  在129服务器上创建一个repo0的代码仓库并且初始化代码仓库和上传数据(数据仓库)
   在166服务器上创建一个repo的代码仓库只是初始化(空仓库)
  代码路径:/data/svn/repo0(根据自己的磁盘做规划)
我配置好的配置文件(conf和密码文件)在我的网盘里面
http://pan.baidu.com/s/1o8Prl02
需要在服务器上吧svnserver都启动,防火墙开启3690端口
-A INPUT -p tcp -m tcp --dport 3690 -j ACCEPT

3:开始执行备份

在129上直接运行:

svnsync init svn://192.168.1.166/repo0 svn://192.168.1.129/repo0

即svnsync init 目标svn链接  源svn链接,执行同步之前的初始化

这一步失败了,报如下错误:

svnsync: Repository has not been enabled to accept revision propchanges;

ask the administrator to create a pre-revprop-change hook

提示需要在hooks下面创建一个pre-revprop-change hook

简单解释下,hook类似于操作系统的勾子,svn会在收到一些操作请求的时候执行hooks目录下的对应的脚本,例如想要commit的时候做一些事情就可以在对应的脚本下面添加你要执行的命令,下一次在commit 的时候就会触发执行

一开始没明白,不知道应该在源机器上创建还是在目标机器上创建,其实是在目标机器上创建的

然后在目标机器上copy了一份pre-revprop-change.tmpl成pre-revprop-change

再次执行初始化命令
修改pre-revprop-change为  注意{166 129上都弄一份  我没有测试这个必须在那个服务器上}
cat << EOF >>pre-revprop-change

#!/bin/sh

exit 0
EOF
再次执行
svnsync init svn://192.168.1.166/repo0 svn://192.168.1.129/repo0
再次初始化,终于成功,提示先让你输入用户名密码
第一个是让你数据root的密码   跳过
然后你输入有可写权限的用户即可
再输入yes
svnsync sync svn://192.168.1.1666/repo0
即可自动把129代码备份到166服务器上

4:如果你一不小心断网了或者把这个进程停止了
再次执行上面的语句就会出现如下错误
svnsync sync svn://192.168.1.1666/repo0
  

svnsync failed to get lock on destination repos
解决办法

 

删除SVN仓库修订号0  svn:sync-lock的保护.

svn propdel svn:sync-lock --revprop -r 0 http://192.168.1.166/repo0


然后在同步就可以了

如果你想代码一旦提交都自动同步到166服务器

需要到129的hooks下面把pre-commit.tmpl copy成pre-commit

在里面加上

svnsync sync svn://192.168.1.1666/repo0

即可自动热备了