Svn 服务器备份
昨天晚上突然想到一个问题,加入我的svn服务器的硬盘坏掉了怎么办,代码岂不是全丢了,
网上查了下,有好多方法可以实现svn服务器的备份,我就试着用sync同步了下代码库里的代码:
Svn服务器系统:
Redhat 6.4-64
Svn版本:
1.6
Svn源码服务器地址:
Svn://192.168.10.1/
Svn目标目录:
Svn://192.168.10.2/
首先在192.168.10.2 服务器上安装svn,版本库创建什么之类的,最好和源码服务器的目录一致,这样比较好备份(只是我这么认为而已)
在192.168.10.2服务器的/data/svn/repos/hooks 目录下将pre-revprop-change.tmpl 文件改名为
pre-revprop-change 并修改其最后一行exit 1 修改为 exit 0。或者将文件内容清空然后写入一行 exit 0。
3.添加权限chmod a+x pre-revprop-change
4.进去svn安装目录cd /usr/local/svn/
5.启动svn: svnserve -d -r /data/svn/repos/
否则下面初始化的时候将停顿
执行初始化
svnsync init svn://192.168.10.2 svn://192.168.10.1
即 svnsync init 目标库源码库
按回车之后将向你询问登陆目标库和源码库的用户名和密码,建议两个库设置相同的用户名和密码。
正确后,显示:
Copied properties for revision 0.
执行同步
svnsync sync svn://192.168.10.2(注意:这里是本机的IP)
即svnsync sync 目标库
正确后显示
Committed revision 1.
Copied properties for revision 1.
Committed revision 2.
Copied properties for revision 2.
Committed revision 3.
Copied properties for revision 3.
Committed revision 4.
Copied properties for revision 4.
Committed revision 5.
Copied properties for revision 5
在源码库的hooks下面,添加post-commit脚本
可以拷贝post-commit.tmpl
即
cp post-commit.tmpl post-commit
然后把post-commit中的内容替换为
/usr/local/svn/bin/svnsync sync --non-interactivesvn://192.168.30.30/ -username jiafei –password jf123
即提交更新后,即执行同步命令,不进行交互
把post-commit 设置为755权限
Ps:
如果post-commit脚本出错,或者无可执行权限,在提交更新时会报错
如果第五步执行不能同步过去代码的话,那么就在备份机上:
在/usr/sbin/ 目录下添加 svnsync.sh 脚本,内容为:
#!/bin/bash
/usr/local/svn/bin/svnsync sync --non-interactivesvn://192.168.10.2/
添加一个定时任务:crontab –e
*/1 * * * * /usr/sbin/svnsync.sh >>/backup/svn_sync/sync.log 2>&1
每分钟从10.1同步一次代码
跟第五步区别不大,我试验过好使
7.到这里基本就Ok了,如果你的服务器坏掉了,那么直接将服务器地址
注意:前边的知道svn启动步骤千万不要错了,因为目录和IP顺序问题,直接导致我苦苦找了一天问题,最后还是重新卸载然后安装svn才发现的问题,记忆力差的孩子伤不起啊