原理:
1 先从SVN 创库update到副本
2 再由副本如果有变化同步到真实测试环境(这里排除一些不需要同步的目录跟文件)
vi rsync.sh
#!/bin/bash
#author lrm929
#date 2015-09-17
rsync () {
#定义rsync 函数
svn update /www/web/fz_checkout >/dev/null
#svn副本更新,这个更新是为了取svn log的值
aa=$(svn log /www/web/fz_checkout/ |grep r|sed -n ‘1p‘|awk ‘{print $1}‘|sed ‘s/r//g‘)
#取svn 最新的一条log 的编号
cc=$(cat /tmp/aa.txt)
#这个是定义一个比最新一条小 的值
if [ $aa -gt $cc ]
#判断svn是否有更新,就是对比svn log 最新一条日志跟更新前的一条日志对比
then
svn update /www/web/fz_checkout
#svn副本更新 (这个其实可以不用)
rsync -avRl --delete --exclude-from="/root/exclude.list" * /www/web/fz/
#更新副本到真实测试环境,排除 exclude.list的目录跟文件
svn log |grep r|sed -n ‘1p‘|awk ‘{print $1}‘|sed ‘s/r//g‘ >/tmp/aa.txt
#取到本次更新的svn log 值存储到/tmp/aa.txt文件,就是为了后面更新做比较的
NOW=$(date ‘+%Y-%m-%d %H:%M‘)
echo "#########$NOW############" >>/tmp/rsync.log
echo "updat rsync........................................................"
#将更新时间写到日志
else
echo "1" >/dev/null
#如果没有更新就退出了
fi
}
while [ true ]; do
/bin/sleep 2
rsync
done
# 然后写个循环中间sleep 2秒 去执行这个函数
nohup /www/web/fz_checkout/rsync.sh >/tmp/rsync.log &
#最后将本脚步在后台执行
本文出自 “信不信由你” 博客,请务必保留此出处http://312461613.blog.51cto.com/965442/1695600
原文地址:http://312461613.blog.51cto.com/965442/1695600