Linux监听文件目录变化并同步

    大型高并发的CMS新闻网站为了访问性能以及SEO,一般采用页面静态化方案。

    静态化方案指由一个服务将新的内容静态化为HTML文件,web服务器直接将静态HTML提供给浏览器,不经过数据库或内存计算。

    

    页面静态化中,需要将新生成的HTML同步给分布式的服务器,此时会用到文件目录监听工具和同步工具。最常用的是rsync和inotifywait。inotifywait监控文件夹变化;rsync同步变化的文件内容,可同步到本机的其他目录或者远程服务器上。

安装 rsync

1
2
3
4
5
wget http://rsync.samba.org/ftp/rsync/src/rsync-3.1.1.tar.gz
tar zxvf rsync-3.1.1.tar.gz
./configure –prefix=/usr/local/rsync-3.1.1
make
make install

安装 inotifywait

1
2
3
4
5
6
wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar zxvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure
make
make install

创建并运行脚本

    新建脚本 inotifywait.sh

1
2
3
4
5
6
7
8
9
#!/bin/bash
# 监控的路径
export CNROMS_SRC=/home/ftpuser/gri/
inotifywait --exclude '\.(part|swp)' -r -mq -e modify,move_self,create,delete,move,close_write $CNROMS_SRC |
while read event;
do
rsync -vazu --progress --password-file=/etc/rsyncd_rsync.secret /home/ftpuser/gri/sla rsync@10.208.1.1::gri ##这里执行同步的命令,可以改为其他的命令

done

    启动脚本

1
nohup sh inotifywait.sh > /dev/null 2>&1