Centos中Rsync结合Inotify 实时同步配置(数据量不大的时候使用)

作者:袖梨 2022-06-30

首先先配置Rsync,上节已经说过了

这里直接说明Inotify

安装配置inotify 服务

在8.8.8.110 上搭建inotify 服务

1、下载安装

 代码如下 复制代码

wget http://nchc.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz

tar xzvf inotify-tools-3.13.tar.gz

cd inotify-tools-3.13

./configure  --prefix=/usr/local/inotify

make

make install

2、创建inotify_rsync.sh脚本

(最好在服务器上直接创建文件,windows上创建的.sh文件可能执行不了,需要修改转换格式
解决方法:
vi  filename
然后用命令
:set ff? #可以看到dos或unix的字样. 如果的确是dos格式的
然后用
:set ff=unix #把它强制为unix格式的, 然后存盘退出。
再次运行脚本。)

 代码如下 复制代码

vi inotify_rsync.sh
以下是脚本内容---------------------------------------
#!/bin/sh
#date:2015-1-11
#function:rysnc 8.8.8.110  to  8.8.8.111

if [ ! -f /etc/passwd.txt];then
       echo "mypassword">/etc/passwd.txt
       /bin/chmod 600 /etc/passwd.txt
fi
log=/opt/logs/rsync.log
src="/home/DemoRoot/Uploads/"
host="8.8.8.111"
module="home_www"

/usr/local/inotify/bin/inotifywait -mr --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' -e close_write,modify,delete,create,attrib $src |  while read DATE TIME DIR FILE; do

      FILECHANGE=${DIR}${FILE}

      /usr/bin/rsync -avH --delete  --progress --password-file=/etc/passwd.txt $src root@$host::$module &
      echo "At ${TIME} on ${DATE}, file $FILECHANGE was backed up via rsync" >> $log
done

脚本结束------------------------------------------------
相关注解如下:
/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib ${src}
-m 是保持一直监听
-r 是递归查看目录
-q 是打印出事件

-e close_write,modify,delete,create,attrib 是指 “监听 创建 移动 删除 写入 权限” 事件
/usr/bin/rsync -avH --delete  --progress --password-file
-a 存档模式
-H 保存硬连接
-delete 删除于多余文件
--password-file 密码文件
今天参数可以man rsync

要排除同步某个目录时,为rsync添加--exculde=PATTERN参数,注意,路径是相对路径,具体查看man rsync。
要排除某个目录的事件监听的处理时,为inotifywait添加--exclude或--excludei参数,具体查看man inotifywait。
--exclude-from="/usr/local/inotify/logs/rules.txt" 可以匹配过滤文件:
如排除包括 .svn的文件:
#cat /usr/local/inotify/logs/rules.txt
- *.svn*

inotifywait 命令产生三个返回值,分别是“日期,时间,文件” 这3个返回值会做为参数传给read,因此脚本中的“while read D E F” 写法细化了返回值。

赋予脚本可执行权限
chmod  -R 755  inotify_rsync.sh
运行
nohup  /opt/inotify_rsync.sh &
显示进程列表
ps -ef|grep inotify_rsync
显示日志
tail -f /opt/logs/rsync.log

相关文章

精彩推荐