linux使用inotify+rsync实现监控目录变化

Posted 越野兔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux使用inotify+rsync实现监控目录变化相关的知识,希望对你有一定的参考价值。

1. 安装inotify-tools

下载插件
阿里镜像站中下载相关插件,按照“centos”、“el7”、“x86_64”等标签进行筛选,例如inotify-tools-devel-3.14-9.el7.x86_64.rpm

将插件上传至服务器

使用root身份安装该插件
yum -y install inotify-tools-devel-3.14-9.el7.x86_64.rpm


2. 源端、目的端安装rsync

下载插件
阿里镜像站中下载相关插件,按照“centos”、“el7”、“x86_64”等标签进行筛选,例如rsync-3.1.2-10.el7.x86_64.rpm

将插件上传至服务器

使用root身份安装该插件
yum -y install rsync-3.1.2-10.el7.x86_64.rpm


3. 目的端配置rsync

使用root登录目的服务器编辑rsync配置文件
vi /etc/rsyncd.conf

编辑内容并保存

uid = root
gid = root
port = 873
address = 10.20.36.160
hosts allow = 10.20.36.223 10.20.36.36
read only = yes
max connections = 10
[datadest]
comment = web content
path = /tmp/dest
ignore errors
  • /tmp/dest目录需要提前建立并设置好权限
  • [datadest] 自定义模块名,rsync通过模块定义同步的目录,可定义多个,本示例中模块名称命名为‘datadest‘
  • uid=0 表示使用root用户
  • 使用hosts allow,以ip作为信任,不需要用户名/密码验证,如果使用auth users/secrets file,则客户端也需要使用用户名/密码或者指定密码文件

启动后台服务
rsync --daemon

设置开机启动
systemctl enable rsyncd.service

启动服务
systemctl start rsyncd.service

查询当前服务状态
systemctl status rsyncd.service


4. 源端编写脚本,监控目录变化并同步至目的端

#!/bin/bash
inotifywait -mrq /tmp/source -e create | while read events
do
        rsync -zrt --delete /tmp/source root@10.20.36.160::datadest
done

(本例中监控文件创建动作)

更改脚本权限
chmod 755 ino.sh

执行该脚本
./ino.sh

(传输失败,未完待续)

以上是关于linux使用inotify+rsync实现监控目录变化的主要内容,如果未能解决你的问题,请参考以下文章

0基础linux运维教程 sersync介绍

(转)Linux下通过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步

Rsync + inotify 实现文件实时同步

rsync+inotify实现数据实时同步

Centos利用 rsync+inotify实现实时同步

Linux系统实时数据同步inotify+rsync