linux中SVN钩子post-commit和rsync实现自动同步数据

我们通过之前文章《SVN钩子简介和常用钩子说明》已经知道 ,SVN钩子实际就是一些shell脚本。今天我们就通过post-commit钩子来实现下svn数据更新,借助rsync实现自动同步数据。
以我们之前创建的版本库/home/svndata/21yunweinew为例说明。
我们创建一个网站源码目录放置我们的程序,实际生产环境中可以是已经存在的web源码目录,比如/home/webdata/21yunweinew。
之前我们同步数据会是通过下载或更新命令来实现:

svn co svn://59.46.80.248/21yunweinew /home/webdata/21yunweinew  --user=xxxxxx --password=xxxxxx
如今,我们直接操作svn版本库上的钩子,写脚本来直接实现数据同步操作。首先,我们进入21yunweinew的钩子hooks目录编辑脚本post-commit如下:

#!/bin/bash
REPOS="$1"
REV="$2"
export  LC_CTYPE="en_US.UTF-8"
export  LC_ALL=
LOGPATH="/home/svn/log"
[ ! -d ${LOGPATH} ]  &&  mkdir -p $LOGPATH
SVN=/usr/bin/svn
$SVN up /home/webdata/21yunweinew --username 21yunwei  --password xxxx  2>&1 >>$LOGPATH
if [ $? -eq 0 ]
  then
     /usr/bin/rsync -az  --delete /home/webdata/21yunweinew /tmp/
fi
 
为了测试,我们将新增的数据放到了/tmp目录中。通过数据更新查看tmp目录内容:

[root@servermanager hooks]# ls  /tmp/21yunweinew/ -l
total 160
drwxr-xr-x 4 root root  4096 Aug 30 16:48 branch
-rw-r--r-- 1 root root 33792 Aug 30 16:48 DHCP服务器的配置1.doc
-rw-r--r-- 1 root root 24576 Aug 30 16:48 DHCP服务器的配置.doc
-rw-r--r-- 1 root root 34304 Aug 30 16:48 DHCP服务器的配置二.doc
-rw-r--r-- 1 root root 46592 Aug 30 16:48 DNS服务器的配置.doc
-rw-r--r-- 1 root root   830 Aug 30 16:48 rsync.sh
drwxr-xr-x 3 root root  4096 Aug 30 16:32 tag
drwxr-xr-x 3 root root  4096 Aug 30 16:48 trunk
注意事项:1,钩子要给shell脚本执行权限。2,脚本中命令调用最好使用绝对路径。

时间: 2024-11-10 00:45:39

linux中SVN钩子post-commit和rsync实现自动同步数据的相关文章

Linux中svn提交文件后自动同步更新到网站目录

 下面来为各位介绍Linux中svn提交文件后自动同步更新到网站目录希望文章对各位有帮助.     有时,对于多文件需要上传到服务器的时候将会很麻烦,但是如果使用svn的钩子脚本就容易实现本地提交svn后,自动同步代码文件到远程服务器的网站目录下,而不必手动上传了. 首先,在网站目录下checkout代码,例如我的目录是/data/www/test svn co https://127.0.0.1/test/trunk/ /data/www/test/ 注意,这是因为有时我会在服务器上直接修改代

【转】CentOS5.6下配置rsync内网同步数据到外网

[转]CentOS5.6下配置rsync内网同步数据到外网 本文转自:http://www.linuxidc.com/Linux/2012-06/64070.htm 一.需求 卫士那边有一个需求,就是要把一台内网服务器的数据同步到外网的一台服务器上,之前我用的是rsync+intify-tool+ssh实现的实时同步更新,前几天我还在东莞出差,开发的人给我打电话说这两台服务器的数据不同步了,我上去检查一遍,原来是用来同步数据的这个系统账号被北京的同事修改,ssh免密码登陆失败了,所以数据同步不了

CentOS5.6下配置rsync内网同步数据到外网

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://navyaijm.blog.51cto.com/4647068/913068 一.需求 卫士那边有一个需求,就是要把一台内网服务器的数据同步到外网的一台服务器上,之前我用的是rsync+intify-tool+ssh实现的实时同步更新,前几天我还在东莞出差,开发的人给我打电话说这两台服务器的数据不同步了,我上去检查一遍,原来是用来同步数据的这个系统账号被北京的同事修改,ssh免密

linux中svn相关指令的使用及repos配置

最近为了方便程序的管理,在服务器安装svnserver,计划定期进行版本更新! 服务器环境用的windows server 2008 我客户端的用的linux 为命令环境使用需要用指令操作 一.指令使用 A.服务器端使用 ( 如果服务器为linux,  下面的 windows dos指令换成相应的shell命令就可以) 1.创建仓库  代码如下 复制代码 svnadmin create test/   2.初始化仓库  代码如下 复制代码 md source   在此目录下建一个文件  代码如下

linux中dns服务器主从配置教程

bind版本:bind-9.9.5 主:192.169.1.100 从:192.169.1.101 tar zxvf bind-9.9.5.tar.gz cd bind-9.9.5 ./configure --prefix=/usr/local/named --enable-epoll --enable-threads --enable-ipv6 --disable-openssl-version-check --enable-backtrace --enable-symtable make &

RSync实现文件同步备份配置详解_服务器其它

一.什么是rsync rsync,remote synchronize顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限.时间.软硬链接等附加信息. rsync是用 "rsync 算法"提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好,另外它还是免费的软件. rsync 包括如下的一些特性: 能更新整个目录和树和文件系统: 有选择性的保持符号链链.硬链接.文件属于.权限.设备以及时间等:

RSync实现文件备份同步详解_服务器其它

[rsync实现网站的备份,文件的同步,不同系统的文件的同步,如果是windows的话,需要windows版本cwrsync] 一.什么是rsync rsync,remote synchronize顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限.时间.软硬链接等附加信息. rsync是用 "rsync 算法"提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好,另外它还是免费的软件. rs

lsyncd与rsync实现实时自动同步的配置

  一.rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了-remote sync 特性如下: 1.可以镜像保存整个目录树和文件系统. 2.可以很容易做到保持原来文件的权限.时间.软硬链接等等. 3.无须特殊权限即可安装. 4.优化的流程,文件传输效率高. 5.可以使用rcp.ssh等方式来传输文件,当然也可以通过直接的socket连接. 6.支持匿名传输. lsyncd的功能: (1)开源软件lsyncd采用inotify原理监听某一目录,如果目录内发生增.删.改.利

Linux系统中SVN安装、权限管理

  SVN安装 SVN服务器有2种运行方式:独立服务器和借助apache运行. svnserve和apache相比是轻量级的,也比较简单,svnserve包含在subversion里面,所以只要安装了subversion就相当于安装了一个小型的svn服务器.它使用自己的一套协议通信.例如访问apache时使用 http:// 前缀,而svnserve使用 svn:// 前缀. 这里介绍的是通过独立服务器方式运行,优点是简单小巧.如果是支持较大规模的开发,还是推荐使用apache服务器方式;这里使