首页 > 代码库 > svn备份方案--镜像库
svn备份方案--镜像库
原理:在源库通过hook脚本实现每次提交都与镜像库进行同步。
实现该方案需要如下步骤:
1、在备份服务器上建立一个空库。
2、修改新建库hooks目录下的pre-revprop-change脚本,将其中的exit 1改为0。
3、执行svnsync init backupurl sourceurl --source-username xxx --source-password xxxxxx --sync-username xxx --sync-password xxxxxx
eg: svnsync init file:///home/svn/backup file:///home/svn/sop/ --source-username ace --source-password ace.123 --sync-username ace --sync-password ace.123
4、在源库执行svnsync sync backupurl进行初次同步。
eg: svnsync sync http://172.17.200.120/svn/backup/ (有可能存在权限问题:chmod -R o+rw /home/svn/)
5、设置hook脚本进行实时同步:
在源库的hooks目录下编辑post-commit脚本,添加svnsync sync backupurl命令到脚本中(建立在命令中指定用户名和密码),eg:
svnsync sync http://172.17.200.120/svn/backup/ --sync-username admin.svn --sync-password ‘s>v>n123‘
全部完成之后,每次新的提交都会调起post-commit脚本进行同步了。
附:
通过jenkins对备份进行监控
之前设置了备份的实时进行,但是备份是否成功任然需要到镜像库的服务器上进行查看,这里将介绍如何使用jenkins对备份结果进行check。
这里也有两种方案
1,通过在hook脚本中添加对jenkins job的http请求来调起job进行check
Jenkins可以通过REST API进行交互,首先建立一个jenkins job,运行在镜像库所在的服务器上,通过输入的参数(镜像库地址,源库版本号,源库UUID)和镜像库参数的比较进行备份的验证。
在源库的hook脚本同步命令下面添加如下一条命令curl -X POST "http://jenkinsserver:8080/jenkins/view/backup_and_restore/job/jobname/buildWithParameters?version=${version}&backupurl=/home/svn/${REPOS}&uuid=${UUID}"
Curl是linux下面进行http交互的工具,没有的话需要安装,-X POST即以post方式调用目标链接,要调起jenkins job需要此方式才行,后面跟的链接中?前的部分既是jenkins job的路径,后面是需要传递过去的参数,参数可以在hook脚本中执行命令获取后传递给jenkins job。
2,通过jenkins上的svn插件对源库进行跟踪
Jenkins的svn插件可以实时跟踪指定svn库的提交情况,每次新的提交都会自动调起jenkins job。但是无法获取备份库的路径,只能在job里进行指定,不过可以避免登陆服务器修改hook脚本的工作。
svn备份方案--镜像库