用inotify监控文件变化

用inotify监控文件变化 · Jun 29, 2018 clicks

Linux下用inotify可以监控文件或文件夹的状态变化.

为了把编译的压力转移到另一台电脑上, 一开始手动运行rsync, 过了两天不耐烦了, 寻思用自动工具去完成.

电脑A: 运行Ubuntu系统;电脑B: 运行Windows 10, 但是安装了WSL子系统(Ubuntu 16.04)

第一步: 现在Windows上安装ssh, 并开启sshd服务

sudo apt install ssh
sudo service ssh start

第二步: 再Window上的WSL子系统中保存ssk key. 从A电脑中把公钥传输到电脑B中.过程略去....

第三步: 运行rsync,测试能否成功

第四步:安装inotify

sudo apt install inotify-tools

然后

inotifywait --help

 

inotifywait 命令参数说明:
-m 选项表示 monitor ,即开启监视
-r 选项表示递归监视,但是会比较慢一些,若监视/etc 目录,其中的子目录下修改文件也是能被监控到。
-e 选项指定要监控的“事件”(events)包括了:access、modify、 attrib、 close_write、 close_nowrite、close、open、 moved_to、 moved_from、move、 move_self、 create、delete、delete_self、unmount。

 

最后写个shell,就可以干活了

#!/bin/sh
srcdir="/home/gebsni/work/demo/manager/src"
distdir="ComputerB:/mnt/d/work/demo_manager/src/"

inotifywait -mrq --timefmt '%d/%m/%y-%H:%M' --format '%T%w%f' -e modify,delete,create,attrib,move ${srcdir} | while read file
do 
rsync -rlptDvzHS --delete --exclude-from=${srcdir}/../.gitignore ${srcdir}/* ${distdir}
done