欢迎光临
我们一直在努力

Rsync+Inotify 实时同步数据

安装:apt install -y rsync inotify-tools

rsync命令常用选项

src = source 同步目录
dst = destination 目标目录

选项说明
-a(重要)包含-rtplgoD选项
-r(重要)同步目录时要加上,类似cp命令的-r选项
-v(重要)同步时显示一些信息,让我们知道同步的过程
-l保留软链接
-L同步软链接时会把源文件给同步
-p保持文件的权限属性
-o保持文件的属主
-g保持文件的属组
-D保持设备文件信息
-t保持文件的时间属性
–delete删除DEST中SRC没有的文件
–exclude过滤指定文件,如–exclude “logs” 会把文件名包含logs的文件或者目录过滤掉,不同步
-p显示同步过程,比如速率,比-v更加详细
-u如果DEST中的文件比SRC新,就不会同步
-z传输时压缩

inotify主要安装的两个软件
inotifywait: (主要)
  在被监控的文件或目录上等待特定文件系统事件(open close delete等)发生,执行后处于阻塞状态,适合在shell脚本中使用
inotifywatch
  收集被监控的文件系统使用的统计数据,指文件系统事件发生的次数统计。
  说明:在实时实时同步的时候,主要是利用inotifywait对目录进行监控

inotifywait参数可使用inotifywait –help查看说明
-m始终保持事件监听
-r递归监控目录数据信息变化
-q输出信息少(只打印事件信息)
-timefmt指定时间输出格式
-format打印使用指定的输出类似格式字符串;即实际监控输出内容
-e指定监听指定的事件,如果省略,表示所有事件都进行监听

-e[参数] 可以指定的事件类型

事件名称说明
close_write修改真实文件内容 # 重要参数
move文件或目录不管移动到或是移出监控目录都触发事件
create在监视目录下创建文件或目录 # 重要参数
delete删除监视目录下的文件或目录 # 重要参数
access读取文件或目录内容
modify修改文件或目录内容
attrib文件或目录的属性改变
close_nowrite文件或目录关闭,在只读模式打开之后关闭的
close文件或目录关闭,不管读或是写模式
open文件或目录被打开
moved_to文件或目录移动到
moved_from文件或目录从移动
move移动文件或目录移动到监视目录 # 重要参数
delete_self文件或目录被删除,目录本身被删除
unmount卸载文件系统

inotifywait –timefmt时间参数说明

命令参数说明
%y年份信息,显示信息为十进制,并且没有世纪信息
%m显示月份,显示信息为十进制(范围 01-12 )
%d每月的第几天,显示倍息为十进制数(范围是 01-31 )
%H小时信息,显示信息为十进制,使用 24小时制(范围 00-23 )
%M显示分钟,显示信息为十进制(范围 00-59 )

inotifywait –format参数说明

命令参数说明
%w事件出现时,监控文件或目录的名称信息
%f事件出现时,将显示监控目录下触发事件的文件或目录信息,否则为空
%e显示发生的事件信息,不同的事件信息用逗号进行分隔
%T输出时间格式中定义的时间格式信息,通过 –timefmt option 语法格式指定时间信息这个格式是通过strftime函数进行匹配时间格式信息的

参数优化:

sysctl -w fs.inotify.max_queued_events=”99999999″

sysctl -w fs.inotify.max_user_watches=”99999999″

sysctl -w fs.inotify.max_user_instances=”65535″

vi /etc/sysctl.conf #添加以下代码

fs.inotify.max_queued_events=99999999

fs.inotify.max_user_watches=99999999

fs.inotify.max_user_instances=65535

#保存退出

例子:当监控的目录新增文件后,过滤指定文件接着同步到目标地址,最后删除监控同步目录新增的文件 sh /bat/inotify.sh

#!/bin/bash
inotifywait -mrq 监控目录 --format "%w%f" -e create|\
while read line
do
        rsync -auP  --delete --remove-source-files --exclude="过滤文件" 监控目录 -e "ssh -p SSH端口 -i 密钥文件" 目前服务器:地址 
done
未经允许不得转载:ViewSea » Rsync+Inotify 实时同步数据

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址