环境:
web工作目录:/var/www/mydafuhao
git仓库目录: /var/www/mydafuhao.git/mydafuhao

需求:inotify监控git仓库目录,发现有版本更新立即同步至web工作目录
之前的想法是git仓库目录与web工作目录做软连接,但是发现apache2 无法识别软连接的目录,具体原因没查到,所以用数据同步方法实现版本更新

ubuntu16.4 系统已经安装了rsync下载安装inotify
# apt-get install make     #默认没有安装make
# apt-get install automake libtool
# wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
# tar xzf inotify-tools-3.14.tar.gz
# cd inotify-tools-3.14/
# ./configure --prefix=/usr/local/inotify
# make && make install

---------------------------------------------------------------------------------------------------------
# cat /var/www/mydafuhao.com.git/notify_rsync.sh
#!/bin/bash
# xliang
# 2018-12-26
export PATH=/bin:/usr/bin:/usr/local/bin:/usr/local/inotify/bin

WEB=mydafuhao.com
SRC=/var/www/$WEB.git     #监控目录路径
DEST1=/var/www/$WEB       #更新同步目录
DT=`date +"%Y-%m-%d %H:%M:%S"`    # 打印当前时间

#wait for change
inotifywait -mrq --timefmt '%y-%m-%d %H:%M' --format '%T %w%f %e' \
--event modify,create,move,delete,attrib $SRC/$WEB | while read line
do
  echo "[$DT] -> file update:" >> /var/www/$WEB.git/rsync.log 2>&1
  echo "$line" >> /var/www/$WEB.git/rsync.log 2>&1
  echo "" >> /var/www/$WEB.git/rsync.log 2>&1
  rsync -avz --exclude=".git" --progress $SRC/$WEB/ $DEST1/ >> /var/www/$WEB.git/rsync.log 2>&1
done

---------------------------------------------------------------------------------------------------------
使用rsync一定要注意的一点是,源路径如果是一个目录的话,带上尾随斜线和不带尾随斜线是不一样的,不带尾随斜线表示的是整个目录包括目录本身,
带上尾随斜线表示的是目录中的文件,不包括目录本身。
---------------------------------------------------------------------------------------------------------

--然后执行此脚本 sh notify_rsync.sh
# nohup sh /var/www/mydafuhao.com.git/notify_rsync.sh &         #后台执行
# echo "nohup sh /var/www/mydafuhao.com.git/notify_rsync.sh &" >> /etc/rc.local      #开机启动

# ps -aux |grep notify

root 25939 0.0 0.0 4504 708 pts/1 S 10:32 0:00 sh /var/www/mydafuhao.com.git/notify_rsync.sh

我的一次rsync+inotify本地数据同步示例的更多相关文章

  1. rsync+inotify实时数据同步单目录实战

    rsync+inotify实时数据同步单目录实战   rsync+inotify实时数据同步单目录实战 inotify是一个强大的.细粒度的.异步的文件系统事件监控机制,linux内核从2.6.13起 ...

  2. rsync+inotify实时数据同步多目录实战

    rsync+inotify实时数据同步多目录实战       inotify配置是建立在rsync服务基础上的配置过程 操作系统 主机名 网卡eth0 默认网关 用途 root@58server1 1 ...

  3. Rsync+inotify 实时数据同步 inotify master 端的配置

    强大的,细致的,异步的文件系统事件监控机制.Linux 内科从 2.6.13 起支持 inotify Inotify 实现的几款软件:Inotify,sersync,lsyncd ※Inotify 实 ...

  4. Centos rsync+inotify 实现数据同步备份

    最近公司做了一

  5. rsync简介与rsync+inotify配置实时同步数据

    rsync简介 rsync是linux系统下的数据镜像备份工具.使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH.rsync主机同步. rsync特性 rsync ...

  6. CentOS 6.5 rsync+inotify实现数据实时同步备份

    CentOS 6.5 rsync+inotify实现数据实时同步备份 rsync    remote sync 远程同步,同步是把数据从缓冲区同步到磁盘上去的.数据在内存缓存区完成之后还没有写入到磁盘 ...

  7. 通过rsync+inotify实现数据实时备份同步

    一.环境描述 测试环境 需求:服务器A与服务器B为主备服务模式,需要保持文件一致性,现采用sersync基于rsync+inotify实现数据实时同步 环境描述: 主服务器172.26.7.50 ,从 ...

  8. Inotify+rsync实现实时数据同步

    使用rsync可以实现数据同步,但是即使使用crontab定时任务最小执行间隔为1分钟,在数据实时性要求比较高场合需使用inotify+rsync实现实时同步 下载inotify wget https ...

  9. sersync基于rsync+inotify实现数据实时同步

    一.环境描述 需求:服务器A与服务器B为主备服务模式,需要保持文件一致性,现采用sersync基于rsync+inotify实现数据实时同步 主服务器A:192.168.1.23 从服务器B:192. ...

随机推荐

  1. JAVA 本地序列化。

    HashMap map = new HashMap(); map.put("province", "北京"); map.put("coding&quo ...

  2. HANA私有云解决方案

        在移动互联网时代,不支持在云上的部署一定会落伍的,HANA作为SAP力推的技术,对云的支持也做的很不错,今天我们就来探讨一下HANA私有云解决方案,至于公有云或者混合云,思路也是大同小异了. ...

  3. 高程三 BOM 读书笔记

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  4. spring data jpa update

    一:在controller  加上: @Controller @RequestMapping("/user") public class UserController { @Aut ...

  5. ArrayList、LinkedList、Vector的区别。

    1. 对于ArrayList与Vector来说,底层都是采用数组方式来实现的 2. ArrayList,LinkedList是不同步的,即线程不安全,而Vector是的.(线程安不安全) 3. Lin ...

  6. Vue.js学习和第一个实例

    第一个实例效果图: 1.node.js下载,然后安装.下载地址:链接:http://pan.baidu.com/s/1o7TONhS 密码:fosa 2.下载Vue.js.链接:http://pan. ...

  7. day02-格式化输出

    python格式化字符串有%和{}两种 字符串格式控制符. 字符串输入数据格式类型(%格式操作符号) %%百分号标记%c字符及其ASCII码%s字符串%d有符号整数(十进制)%u无符号整数(十进制)% ...

  8. 在windows、linux中开启nginx的Gzip压缩大大提高页面、图片加载速度<转>

    为了降低tomcat服务的压力,把页面上的图片采用windows版的nginx进行加载,由于有些图片比较大,加载特别的慢,所以在nginx中打开了gzip的压缩功能.加载图片的速度快了很多. 通过站长 ...

  9. Leetcode 题解 Trapping Rain Water

    题目链接:https://leetcode.com/problems/trapping-rain-water/description/ 思路: 1.先找到最左侧第一个高度不为0的柱子i. 2.从i+1 ...

  10. Swap Nodes in Pairs LeetCode题解

    做完这个题目,感觉LeetCode的题目出的真好... 这种题,如果让我在面试时候纸上写代码,肯定会挂的. 我昨天晚上看的题目,昨天脑子是懵的,放下了.今天早上来做. 一开始做,提交,果然错了.写的代 ...