通过SVN钩子post-commit和rsync实现自动同步数据 – 21运维
通知: .-...

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

SVN 21运维 2585浏览 0评论

21运维原创,转载请注明出处。
我们通过之前文章《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目录内容:

[[email protected] 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,脚本中命令调用最好使用绝对路径。

转载请注明:21运维 » 通过SVN钩子post-commit和rsync实现自动同步数据

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址