使用svn钩子脚本控制svn库的实时备份

Svn镜像库实时同步实现

一, 配置rsync的同步机制先实现能手动同步

环境:svn源码库 192.168.115.120

Svn镜像库 192.168.115.121

1,在源码库中配置rsync服务 (配置文件默认没有需要手动建立 /etc/rsyncd.cong)

上面 [ UGOR]就是要更新的模块,然后启动服务 rsync –deamo查看服务状态lsof –I 873

注:认证账户格式为 用户:密码,文件权限为 600, (rsync.pass)

2,在镜像库中同步内容执行

rsync -vzrtopgl --progress --delete --password-file=/home/svnroot/passwdrsync [email protected]::UGO6R /home/svnroot/UGO6R(单一同步 UGO6R)

全部同步写成一个脚本如下

执行这个脚本则同步所有的配置模块也就是同步到本地镜像库的目录

注:上面发rsync使用的自己的协议认证,后面自动用svn的hook脚本时候则是ssh协议,两台机器通信需要做密钥认证。

把脚本加入计划任务每10分钟执行一次,但是也不做到实时一致。所以需要源码库192.168.115.120的每次提交来触发实时更新,保证两个库内容完全一致

二, svn钩子脚本触发实时同步

思路:每次源码的提交都会触发 post_commit,通过这个脚本我们可以做提交后的同步

我使用的是远程登陆执行的方式

使用的是ssh的协议。为了不交互输入密码实现自动化做 密钥认证(认证方式就不贴了)

三, 正确性的认证

首先查看源码库192.168.115.120的日志

更新后在镜像库执行 更新脚本

然后查看镜像库的内容

可以看到两个svn库的内容一致

Ps:只是通过自己的想法实现的功能,后续会一直完善

三,错误以及解决方式

解决密钥认证时候我是在一个普通用户和root中做的,但是hook脚本使用的是apache的用户。认证信息获取不了,我尝试把root的认证信息放在上面的报错目录,给予其他用户的读写权限解决问题,子尝试了提交710的05库,验证已经自动同步

时间: 2024-11-07 20:36:22

使用svn钩子脚本控制svn库的实时备份的相关文章

svn 钩子脚本

#vim post-commit #!/bin/bash REPOS="$1"  REV="$2"  SVNLOOK="/usr/bin/svnlook" echo "`date +%F`" >> /tmp/post.log echo "REPOS=$1 REV=$2" >> /tmp/post.log echo -e "\[email protected][email p

svn钩子的使用案例

我在这一篇博文http://lidaxia.blog.51cto.com/11588738/1928773中提到,svn钩子脚本是svn非常实用重要的功能,在工作中,会经常需要用到svn钩子脚本以实现除了svn自带功能之外的附加功能,那么这一篇博文,我们就举例演示一下,svn钩子是用来做什么的,以及怎么用. svn钩子的功能: svn钩子是一个脚本,它的具体写法和linux操作系统中shell脚本的写法并没有什么不同,通俗来说,svn钩子的功能就是当某种版本库事件(删除文件.上传文件.修改文件名

SVN钩子运用

一.Svn钩子脚本简介 钩子脚本的具体写法就是操作系统shell脚本程序写法,请根据自己SVN所在的操作系统和shell程序进行相应的开发. 钩子脚本就是被某些版本库事件触发的程序,例如创建新版本或修改未被版本控制的属性.每个钩子都能掌管足够的信息来了解发生了什么事件,操作对象是什么以及触发事件用户的账号.根据钩子的输出或者返回状态,钩子程序能够以某种方式控制该动作继续执行,停止或者挂起. svn的hooks模版功能介绍 start-commit 提交前触发事务 pre-commit 提交完成前

svn+钩子程序+rsync 自动化同步代码

svn+钩子程序+rsync 自动化同步代码实验环境如下:     IP地址            服务器功能             路径                           同步机制192.168.3.206          svn               svn路径:/data/svn                 rsync客户端192.168.3.210          代码服务器        代码目录:/data/html               rs

svn钩子自动化同步代码提交任务

##############################################################第一种方式:svn服务端  也是rsync的客户端web        是rsync的服务端svn服务端执行:[[email protected] ~]#sh yum-svn02.sh[[email protected] ~]#mkdir /var/www/bbs -p[[email protected] ~]#svn checkout http://192.168.13.

svn钩子

#!/bin/sh #修改为服务编码 export.UTF-8 #Set variable REPOS="$1" REV="$2" #svn安装脚本目录 SVN=/usr/bin/svn #这里设置为你的网站的根目录 WEB=/www/web/music #日志存放文件 LOG=/www/log/svnLog/first.txt #update the code from the SVN #demo是用户名 123456是密码 $SVN update $WEB --

svn利用钩子脚本功能实现代码同步到web目录

一.hook简单介绍 为了方便管理员控制提交的过程 ,Subversion  提供了 hook机制.当特定的 事件发生时,相应的 hook会被调用, hook其实就相当于特定事件的处理函数.每个hook  会得到与它所处理的事件相关的参数,根据 hook的返回值, Subversion会决定是否继续当前的提交过程 要实际安装一个可用的钩子,你需要在 repos/hooks目录下安装一些与钩子同名(如 start-commit或者post-commit)的可执行程序或脚本. 二.本地机器SVN自动

centos7配置svn钩子hooks脚本自动同步代码到项目目录

由于项目需要,svn提交后的代码希望再测试服务器上测试,每次提交后还要手动去svn update一次 十分麻烦,配置好svn钩子以后就省去了这些麻烦. 进入svn版本库目录找到hooks目录找到文件post-commit.tmpl 复制出一个命名为post-commit的文件,并修改权限为可执行权限 命令如下: cd /var/data/svndata/myproject/hooks cp post-commit.tmpl post-commit chmod 755 post-commit vi

svn学习之一(svn独立服务器搭建)svn钩子了解

SVN实战笔记#####################################################xingxing qq:1218761836 qq群:150181442##################################################### SVN实战  目录SVN实战    1一.SVN简介    1二.SVN运行方式    12.1 svn的访问模式3种    1三.SVN数据格式    23.1 svn 档案库数据格式    2四.