Answers:
如果安装了inotify-tools,则可以inotifywait
在文件或目录写入以下内容时触发操作:
#!/bin/sh
dir1=/path/to/A/
while inotifywait -qqre modify "$dir1"; do
/run/backup/to/B
done
在这种情况下,如果-qq
开关完全处于静默状态,-r
则是递归的(如果需要),并且-e
是要监视的事件modify
。来自man inotifywait
:
修改
监视文件或监视目录中的文件已写入。
/etc/profile
对于系统范围或.bash_profile
仅对您的用户是。要在引导后运行它,取决于您的Unix / Linux风格。/etc/rc.local
,/etc/rc.d/
或/etc/init.d/
--monitor
开关(并将输出通过管道传递到循环中),否则inotifywait
,一遍
尝试使用entr
命令行工具,该工具可以在文件更改时运行任意命令。从2.9版本开始,添加了目录监视选项(-d
)以在将新文件添加到目录时对事件做出反应。
如果将新文件添加到项目中,则运行实用程序的示例:
$ while true; do
> echo src/* | entr -d your_command
> done
在目录监视模式下,每个文件的父目录都隐式添加到监视列表中。
这样做的唯一含义是,如果出现新文件,则必须退出该文件以允许外部Shell循环重新扫描文件系统。
这是不带目录监视选项的版本:
$ while true; do
> echo src/* src | entr your_command
> done
根据您的需要,这是一个更简单的示例:
$ ls -d * | entr sh -c 'rsync -vuar A B'
检查:entrproject.org网站以获取更多详细信息。
incrond
可能也很有趣。