自动检测添加和删除任何特定目录和子目录中的任何文件

时间:2016-07-15 09:20:06

标签: linux bash shell nfs inotify

我正在尝试编写一个工具来自动检测任何文件添加或删除到特定目录。我知道inotify可以以最有效的方式完成这项任务,代码也会更短。但我不能在这里使用inotify,因为我在NFS目录上工作,其中inotify无法检测到任何目录更改。 (据我所知)。

这是我编写的用于监视任何目录的一些粗略代码,这在很多方面都很糟糕。此外,有时它会跳过一些事件。

while true
    do

    touch temp_fs_state.log
    touch temp_1_fs_state.log

    find . -type f -ls |awk '{print $NF}' >> temp_fs_state.log
    sleep 1
    find . -type f -ls |awk '{print $NF}' >> temp_1_fs_state.log

    diffResult=$(diff  temp_fs_state.log temp_1_fs_state.log |grep -E '<|>' )

    echo $diffResult |grep -Fq '>'
    if [ "$?" -eq 0 ];then
       echo "`echo $diffResult | awk '{print $NF}'` ADDED to the target directory!!"
    fi
    echo $diffResult |grep -Fq '<'

    if [ "$?" -eq 0 ];then
       echo "`echo $diffResult | awk '{print $NF}'` DELETED to the target directory!!"
    fi

    rm -rf temp_fs_state.log temp_1_fs_state.log

done

当前结果:

当前解决方案未检测到某些文件。

sh monitor
./x9 DELETED to the target directory!!
./x11 ADDED to the target directory!!
./x13 ADDED to the target directory!!
./x14 ADDED to the target directory!!
./x15 ADDED to the target directory!!
./x17 ADDED to the target directory!!
./x17 DELETED to the target directory!!

问题:

使用其他更短或更智能的方法可以取得类似的结果吗? 我们可以确保没有跳过任何事件吗?

PS:请假设,此处不考虑CPU性能,因为它仅用于测试目的。

0 个答案:

没有答案