bash & inotify - 监控和移动文件

Posted

技术标签:

【中文标题】bash & inotify - 监控和移动文件【英文标题】:bash & inotify - monitoring and moving file 【发布时间】:2016-03-01 08:38:56 【问题描述】:

我不是 Linux 的高级用户,但我正在寻找 bash 中的一些 简单脚本,它们将在 cron 或任何其他方式下运行,在 5-10 分钟内在 新目录/文件 已经上传到目录 脚本将在 新目录/文件 之后 寻找 新文件将包含文件的新目录移动到其他位置

我发现 inotify 可以很好地解决这个问题,但问题是如何使用它。

【问题讨论】:

***.com/questions/4062806/inotify-how-to-use-it-linux 但我认为它与我的问题无关。我正在寻找将“新”文件移动到新位置的解决方案。 使用incron。它来自 inotify 的开发人员并为此目的而制作。无论如何,你的问题太宽泛了。 【参考方案1】:

我一直在使用 inotifywait 来识别某些路径中发生了一些文件系统更改。

看看: http://linux.die.net/man/1/inotifywait

您可以指定您感兴趣的更改(删除、创建、修改等)以及脚本是应该输出它还是在更改后直接退出。

我一直在使用这个工具,我的脚本正在启动 inotifywait,当它存在时,执行一些操作并再次重新启动 inotifywait。

希望这会有所帮助。 马丁

【讨论】:

我根据互联网上的许多信息创建了类似的东西,但遗憾的是如何使用包含一些文件的目录。 cd "$dir" inotifywait -m -r -q -e close_write --format %f . | while IFS= read -r file;do mv -p "$file" "$target" echo "$file has been copied to the $target" done 对不起,我不明白 - “如何使用包含一些文件的目录”?你什么意思?有什么问题? 再次确定。我有一些名为“uploaded”的目录,我想监视这个目录的一些更新。有时,此目录将包含文件和目录以及这些目录中的文件。 /uploaded/directory/file1.mpg /uploaded/directory/file2.txt /uploaded/directory2/file.avi /uploaded/directory3/file4.mpeg 然后这个文件应该用他自己的结构移动到新位置后,当所有操作上档完毕。 /moved/directory/file1.mpg /moved/directory/file2.txt /moved/directory2/file.avi /moved/directory3/file4.mpeg 为了维护文件结构,使用rsync怎么样?类似:while [ true ];做 inotifywait -m -r -q (其他选项) && rsync -ar /uploaded/ /moved/ ;完成linux.die.net/man/1/rsync

以上是关于bash & inotify - 监控和移动文件的主要内容,如果未能解决你的问题,请参考以下文章

centos inotify-rsync配置

inotify监控目录变化重启服务器tornado项目

inotify+rsync做实时同步

zabbix 监控文件夹

inotify 和 bash

inotify事件监控工具