inotify+rsync实现数据实时同步(4)

以上的信息可以通过 inotifywait --help  获得

 
1.5.6 inotifywait 参数--timefmt <fmt>时间格式参数

命令参数

 

参数说明

 

%d(重要参数)

 

The day of the month as a decimal number(range 01 to 31)

每月的第几天,显示倍息为十进制数(范围是 01-31 )

 

%m(重要参数)

 

The month as a decimal number (range 01 to 12).

显示月份,显示信息为十进制(范围 01-12 )

 

%M

 

The minute as a decimal number (range 00 to 59).

显示分钟,显示信息为十进制(范围 00-59 )

 

%y(重要参数)

 

The year as a decimal number without a century (range 00 to 99).

年份信息,显示信息为十进制,并且没有世纪信息

 

%Y

 

The year as a decimal number including the century.

年份信息,显示信息为十进制,并且包含世纪信息

 

%H

 

The hour as a decimal number using a 24-hour clock (range 00 to 23).

小时信息,显示信息为十进制,使用 24小时制(范围 00-23 )

 

说明:以上信息可以通过 man strftime信息获取

 
1.5.6.1 修改输出的日期格式

[root@nfs01 ~]# inotifywait -mrq  /data --timefmt "%d/%m/%y %H:%M" --format "%T %w%f"

17/10/17 11:12 /data/test1.txt

1.5.7 -e[参数] 重要监控事件参数汇总表:

重要事件

 

包含事件

 

备注说明

 

close

 

close_write 

close_nowrite

 

文件或目录关闭,不管读或是写模式

即包含写关闭与读关闭

 

close_write

 

create

 

包含文件创建事件,但不包含目录创建事件

 

move

 

moved_to 

moved_from

 

文件或目录不管移动到或是移动出监控目录都触发事件

即包含信息移入或移出监控目录事件

 

重要参数汇总:根据以上说明,在实际使用时,只要监控以下事件即可

create 创建、 delete 删除、 movedjto 移入、 close_write

inotifywait -mrq /data --format "%w%f"  -e create,delete,moved_to,close_write

 
1.6 inotifywait命令的测试

inotifywait命令测试的说明:

需要打开两个连接窗口

1窗口运行inotifywait

2窗口对文件夹进行操作,可在一窗口中查看出inotifywait的监控记录

1.6.1 、创建文件的逻辑↓

[root@nfs01 ~]# inotifywait /data

Setting up watches.

Watches established.

/data/ CREATE test1.txt

/data/ OPEN test1.txt

/data/ ATTRIB test1.txt

/data/ CLOSE_WRITE,CLOSE test1.txt

创建文件,inotifywait显示创建文件的过程↑

[root@nfs01 data]# touch test1.txt

1.6.2 创建目录逻辑↓

[root@nfs01 data]# mkdir testdir

[root@nfs01 ~]#

/data/ CREATE,ISDIR testdir

1.6.3 监控子目录下的文件↓

[root@nfs01 data]# touch  testdir/test01.txt

[root@nfs01 ~]# inotifywait -mrq  /data

/data/testdir/ OPEN test01.txt

/data/testdir/ ATTRIB test01.txt

/data/testdir/ CLOSE_WRITE,CLOSE test01.txt

1.6.4 sed命令修改逻辑

[root@nfs01 data]# sed 's#132#123#g' test.txt -i

[root@nfs01 ~]# inotifywait -mrq  /data --timefmt "%d-%m-%y %H:%M" --format "%T %w%f 事件信息: %e" -e moved_from

/data/test.txt 事件信息: OPEN

/data/sedDh5R8v 事件信息: CREATE

/data/sedDh5R8v 事件信息: OPEN

/data/test.txt 事件信息: ACCESS

/data/sedDh5R8v 事件信息: MODIFY

/data/sedDh5R8v 事件信息: ATTRIB

/data/sedDh5R8v 事件信息: ATTRIB

/data/test.txt 事件信息: CLOSE_NOWRITE,CLOSE

/data/sedDh5R8v 事件信息: CLOSE_WRITE,CLOSE

/data/sedDh5R8v 事件信息: MOVED_FROM

/data/test.txt 事件信息: MOVED_TO

sed命令替换逻辑

01. 创建临时文件

02. 将原文件内容放置到临时文件中,修改替换临时文件中的内容,原有文件不做改动

03. 重命名临时文件,覆盖原文件

1.6.5 inotifywait监控中 -e 的参数使用

inotifywait -mrq /data --timefmt "%d/%m/%y %H:%M" --format "%T %w%f 事件信息: %e" -e create

说明:表示只监听create事件

inotifywait -mrq /data --timefmt "%d/%m/%y %H:%M" --format "%T %w%f 事件信息: %e"

说明:不指定-e参数,表示监听所有事件

02. 删除事件delete

# inotifywait -mrq /data --timefmt "%F %H:%M" --format "%T %w%f 事件信息: %@e" -e delete

2017-10-17 11:28 /data/02.txt 事件信息: DELETE

2017-10-17 11:28 /data/03.txt 事件信息: DELETE

2017-10-17 11:28 /data/04.txt 事件信息: DELETE

03. 修改事件close_write

# inotifywait -mrq /data --timefmt "%F %H:%M" --format "%T %w%f 事件信息: %@e" -e delete,close_write

2017-10-17 11:30 /data/oldgirl.txt 事件信息: CLOSE_WRITE@CLOSE

2017-10-17 11:30 /data/.oldgirl.txt.swx 事件信息: CLOSE_WRITE@CLOSE

2017-10-17 11:30 /data/.oldgirl.txt.swx 事件信息: DELETE

2017-10-17 11:30 /data/.oldgirl.txt.swp 事件信息: CLOSE_WRITE@CLOSE

2017-10-17 11:30 /data/.oldgirl.txt.swp 事件信息: DELETE

2017-10-17 11:30 /data/.oldgirl.txt.swp 事件信息: CLOSE_WRITE@CLOSE

2017-10-17 11:30 /data/.oldgirl.txt.swp 事件信息: DELETE

04. 移动事件moved_to

inotifywait -mrq /data --timefmt "%F %H:%M" --format "%T %w%f 事件信息: %@e" -e delete,close_write,moved_to

2017-10-17 11:34 /data/hosts 事件信息: MOVED_TO

1.7 实时同步命令参数示意图

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/0dc5ef438a3cfc37133d5c3cedcc6394.html