首页 > 网络 > 其他 >

CentOS7 inotify-tools+lftp 实现文件实时同步

2019-02-11

CentOS7 inotify-tools+lftp 实现文件实时同步。实现ftp镜像功能,比较文件后进行增量上传,yum install gcc 如果系统内未安装,需要预先安装,否则无法编译inotify-tools。

工具:inotify-tools :监控文件 create, move, modify, delete, move

gcc :inotify-tools安装需要

lftp :实现ftp镜像功能,比较文件后进行增量上传

一,安装inotify-tools

1.安装gcc

yum install gcc 如果系统内未安装,需要预先安装,否则无法编译inotify-tools

2.安装inotify-tools

下载之后

ar -zvxf inotify-tools-3.14.tar.gz

cd inotify-tools-3.14

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

make

make install

有的建议修改以下参数

修改inotify参数

1、命令修改

[root@iZ25w1kdi5zZ bin]# sysctl -w fs.inotify.max_user_instances=130fs.inotify.max_user_instances = 1302、文件修改[root@iZ25w1kdi5zZ]# vi /etc/sysctl.conf#添加如下代码fs.inotify.max_user_instances=1303、参数说明max_user_instances:每个用户创建inotify实例最大值

max_queued_events:inotify队列最大长度,如果值太小,会出现错误,导致监控文件不准确

max_user_watches:要知道同步的文件包含的目录数,可以用:[root@iZ25w1kdi5zZhome]# find /home/rain -type d|wc -l 统计,必须保证参数值大于统计结果(/home/rain为同步文件目录)。

二,创建实时监控脚本

mkdir -p /opt/scripts

cd /opt/scripts

vi inotify_start.sh

#!/bin/bash
#chkconfig:345 88 14                   #不加的话chkconfig --add 肯定是要报service
                                       #inotify.sh does not support chkconfig 错误 

/usr/local/inotify/bin/inotifywait -mrq -e create,move --fromfile '/opt/script/ffile' | while read LINE
do
if [[ $LINE = *CREATE* ]];then                  #当变量LINE有CREATE字符时执行lftp_toftp.sh
/home/script/lftp_toftp.sh
elif [[ $LINE = *MOVE* ]];then                  #当变量LINE有MOVE字符时执行lftp_toftp.sh
/home/script/lftp_toftp.sh
fi
done

chkconfig:345 88 14

注释表示在rc3|4|5.d下生成优先级88的启动脚本软链接,另外在rc0|6.d下生成优先级14的停止脚本软链接(大概是这么个意思,不太理解是什么)

/usr/local/inotify/bin/inotifywait -mrq -e modify,create,move,delete

-mrq: 始终保持监听状态;递归查询目录;打印出监控事件

-e :定义监控的事件,modify, create, move, delete

inotifywait常用参数:--timefmt 时间格式%y年 %m月 %d日 %H小时 %M分钟--format 输出格式%T时间 %w路径 %f文件名 %e状态-m 始终保持监听状态,默认触发事件即退出。-r 递归查询目录-q 打印出监控事件-e 定义监控的事件,可用参数:open 打开文件access 访问文件modify 修改文件delete 删除文件create 新建文件--fromfile '/opt/script/ffile' :定义被监控的文件夹

vi ffile

/home/log/ #监控log文件夹@/home/log/upload #不监控upload文件夹chmod a+x ./inotify_start.sh 赋予可执行权限

三,开机自动启动inotify-tools脚本

将编辑好的脚本,复制或移动到以下文件夹

/etc/rc.d/init.d/

执行

cd/etc/rc.d/init.d

chkconfig--add inotify_start.sh

chkconfig inotify_start.sh

系统启动后就自动运行inotify_start.sh了

四,编辑lftp上传脚本

安装lftp : yum install lftp

任意位置,/home/script/,新建脚本文件

vi lftp_toftp.sh

#!/bin/bashlftp -c "set ftp:list-options -a;open ftp://web1:webweb@172.16.200.46;lcd /home/wwwroot/anoroot/upload/asg_log/; #本地文件夹cd /mydic/temp; #远程ftp上的文件夹mirror --reverse --use-cache --verbose --allow-chown --allow-suid --no-umask --parallel=2 --include-glob *.log" #镜像向ftp同步扩展名为log的文件

相关文章
最新文章
热点推荐