Linux 系统中使用 inotifywait 监控文件变化

系统 Linux
有时候我们常需要当文件变化的时候便触发某些脚本操作,比如说有文件更新了就同步文件到远程机器。在实现这个操作上,主要用到两个工具,一个是rsync,一个是inotifywait。inotifywait的作用是监控文件夹变化,rsync是用来同步,可同步到本机的其他目录或者远程服务器上。

有时候我们常需要当文件变化的时候便触发某些脚本操作,比如说有文件更新了就同步文件到远程机器。在实现这个操作上,主要用到两个工具,一个是rsync,一个是inotifywait。inotifywait的作用是监控文件夹变化,rsync是用来同步,可同步到本机的其他目录或者远程服务器上。

我们先看下二者的安装方式。

安装rsync

wget http://rsync.samba.org/ftp/rsync/src/rsync-3.1.1.tar.gz
tar zxvf rsync-3.1.1.tar.gz 
./configure –prefix=/usr/local/rsync-3.1.1
make
make install

安装inotifywait

wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar zxvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure
make
make install

创建并运行脚本

新建脚本inotifywait.sh 并输入以下内容:

#!/bin/bash
export CNROMS_SRC=/home/ftpuser/gri/   # 同步的路径,请根据实际情况修改
inotifywait --exclude '\.(part|swp)' -r -mq -e  modify,move_self,create,delete,move,close_write $CNROMS_SRC |
  while read event;
    do
    rsync -vazu --progress  --password-file=/etc/rsyncd_rsync.secret  /home/ftpuser/gri/sla  rsync@10.208.1.1::gri ##这里执行同步的命令,可以改为其他的命令


  done

然后,执行下面命令,会在后台执行监控。

nohup sh inotifywait.sh > /dev/null 2>&1


接下来我们重点看下inotify的使用。

inotify 是一个 Linux 内核提供的 API,它可以监视文件系统事件,比如文件或目录的创建、删除、修改等。

inotify-tools 是一套用户空间的工具,包括 inotifywait 和 inotifywatch,用于使用 inotify API。

这些工具可以对文件系统事件进行监控,并生成相应的警告或日志。

inotifywait是一个非常实用的命令,它属于inotify-tools包,可以用来监控Linux文件系统事件。

下面是一些inotifywait应用的例子:

监控目录或文件的创建、删除、移动等操作:

inotifywait -m -r -e create,delete,move /path/to/directory

这个命令将监视/path/to/directory目录中所有文件和目录的创建、删除和移动操作。当有文件或目录被创建、删除或移动时,这个命令将显示相应的信息。

监控文件的修改操作:

inotifywait -m -r -e modify /path/to/file

这个命令将监视/path/to/file文件的修改操作。当有文件被修改时,这个命令将显示相应的信息。

监控目录或文件的属性变化:

inotifywait -m -r -e attrib /path/to/directory

这个命令将监视/path/to/directory目录中所有文件和目录的属性变化。当有文件或目录的属性发生变化时,这个命令将显示相应的信息。

监控多个目录或文件的事件:

inotifywait -m -r -e create,delete,move /path/to/directory1 /path/to/directory2 /path/to/file1 /path/to/file2

这个命令将监视多个目录和文件的创建、删除和移动操作。当有目录或文件发生相应的事件时,这个命令将显示相应的信息。

监控事件并执行命令:

inotifywait -m -r -e create,delete,move /path/to/directory -- /path/to/command

上面的命令将监视/path/to/directory目录中所有文件和目录的创建、删除和移动操作,并在事件发生时执行指定的命令。可以将命令替换为你想要执行的任何命令。这些例子只是inotifywait的一些基本用法,大家可以根据自己的需求进一步扩展和定制。

责任编辑:华轩 来源: 微技术之家
相关推荐

2014-12-22 09:51:06

Linuxlogwatch

2019-12-31 14:00:35

LinuxNginx脚本语言

2019-12-31 21:26:54

系统安全网络攻击Linux

2018-01-09 09:00:01

Linux命令文件压缩

2009-12-14 13:33:31

linuxramdisk文件系统

2020-07-29 07:40:19

Linux系统Vim

2010-07-19 12:49:55

Perl修改文件

2010-01-12 16:05:53

Linux Mono

2023-06-26 08:22:00

2023-09-15 13:31:00

Linuxattr

2020-12-02 13:19:47

Shell监控文件Linux

2018-10-09 08:30:55

UbuntuLinuxRAR文件

2010-11-04 10:16:11

inotify监控Linux文件系统

2020-06-15 07:00:00

Linux嵌入式系统

2009-12-22 10:33:32

Linux操作系统

2011-05-18 09:30:40

Linux浏览器

2022-11-07 12:52:25

Linuxfsck命令

2010-05-26 12:57:59

linux 系统监控

2018-04-28 09:12:42

Linux

2022-05-25 08:41:48

Linuxfd 命令文件
点赞
收藏

51CTO技术栈公众号