CentOS7 inotify-tools+lftp 实现文件实时同步
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS7 inotify-tools+lftp 实现文件实时同步相关的知识,希望对你有一定的参考价值。
工具:inotify-tools ?:监控文件 ?create, move, modify, delete, move
? ? ? ? ? gcc ? ? ? ? ? ? ?:inotify-tools安装需要
? ? ? ? ?lftp ? ? ? ? ? ? ? :实现ftp镜像功能,比较文件后进行增量上传
?
一,安装inotify-tools
? ? ? 1.安装gcc
? ? ? ? ?yum install gcc ? ? 如果系统内未安装,需要预先安装,否则无法编译inotify-tools
? ? ? 2.安装inotify-tools
? ? ? ? ?该项目的github地址:https://github.com/rvoicilas/inotify-tools
? ? ? ? ?下载地址:http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
? ? ? ? 下载之后
? ? ? ??ar -zvxf inotify-tools-3.14.tar.gz
? ? ? ??cd inotify-tools-3.14
? ? ? ??./configure --prefix=/usr/local/inotify
? ? ? ? make
? ? ? ? make install
有的建议修改以下参数
修改inotify参数
1、命令修改
[[email protected] bin]# sysctl -w fs.inotify.max_user_instances=130
fs.inotify.max_user_instances = 130
2、文件修改
[[email protected]]# vi /etc/sysctl.conf
#添加如下代码
fs.inotify.max_user_instances=130
3、参数说明?
max_user_instances:每个用户创建inotify实例最大值
max_queued_events:inotify队列最大长度,如果值太小,会出现错误,导致监控文件不准确
max_user_watches:要知道同步的文件包含的目录数,可以用:[[email protected]]# find /home/rain -type d|wc -l 统计,必须保证参数值大于统计结果(/home/rain为同步文件目录)。
---------------------?
作者:god_wot?
来源:CSDN?
原文:https://blog.csdn.net/god_wot/article/details/50448814?
版权声明:本文为博主原创文章,转载请附上博文链接!
二,创建实时监控脚本
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/bash
lftp -c "set ftp:list-options -a;
open ftp://web1:[email protected];
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的文件
?
参考资料:
inotify-tools?https://blog.csdn.net/god_wot/article/details/50448814
shell ?https://blog.csdn.net/junmail/article/details/4912065
? ? ? ? ??https://www.yiibai.com/shell/if-elif-statement.html
? ? ? ? ??http://www.runoob.com/linux/linux-shell-process-control.html
开机启动:http://www.cnblogs.com/lei0213/p/8595030.html
? ? ? ? ? ? ? ? ?https://blog.csdn.net/lzjansing/article/details/53053824
作者:ken6328
来源:CSDN
原文:https://blog.csdn.net/ken6328/article/details/86714373
版权声明:本文为博主原创文章,转载请附上博文链接!
以上是关于CentOS7 inotify-tools+lftp 实现文件实时同步的主要内容,如果未能解决你的问题,请参考以下文章
centos7中配置rsync+inotify实现自动监控数据同步
Centos7.0系统下Rsync+sersync实现数据实时增量同步备份