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和密码文件)在我的网盘里面
需要在服务器上吧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
删除SVN仓库修订号0 svn:sync-lock的保护.
svn propdel svn:sync-lock --revprop -r 0
然后在同步就可以了
如果你想代码一旦提交都自动同步到166服务器
需要到129的hooks下面把pre-commit.tmpl copy成pre-commit
在里面加上
svnsync sync svn://192.168.1.1666/repo0
即可自动热备了
阅读(4211) | 评论(0) | 转发(0) |