如何使用“ stat”检测新文件,然后将其移动到其他目录?

知识管理

最终,我想检测到一个新的备份文件被放到目录中,然后将该新文件移动到另一个位置进行其他操作。

当没有人登录到服务器并且我用来启动操作的脚本将由crontab条目触发时,这需要工作。

我试着像这样使用“ inotifywait”:

dir=/home/userid/drop/
target=/home/userid/current/

inotifywait -m "$dir" --format '%w%f' -e create |
    while read file; do
        mv "$file" "$target"
    done

这仅在您打开了终端窗口会话的情况下有效。如果尝试使用crontab条目无人值守地启动此scipt,则忽略inotifywait命令。

因此,我尝试使用'entr'并发现了相同的问题。仅当您打开终端窗口时,它才有效。当我使用entr创建脚本并在无人看管的情况下使用crontab条目触发了该脚本时,就像inotifywait示例一样,该脚本被忽略了。

因此,我知道可以使用'stat'完成此操作,并且我查看了许多示例并尝试根据我的意图弄清楚它们,但我只是不了解其语法。

我知道stat可以检测目录中是否存在新文件,但是我不知道如何处理该结果以便触发执行mv(移动)命令以将新文件移动到其他位置。

一旦有了可以执行此操作的stat语法,我将需要它永久运行。也许它仅每15秒检查一次,但是我将需要它始终准备移动文件。

如果有人有这样做的经验,并且可以帮助我将stat链接到执行另一个命令的语法上,我将不胜感激。我真的相信其他人也想知道如何做到这一点,因为我无法想象每个人都可以将ssh腻子窗口全天候24/7打开,以解决其他两种解决方案。

提前致谢。

知识管理

鲍勃

您所需要的就是incronincron如果您有Ubuntu / Debian,请先安装软件包:

sudo apt install incron

或将命令用于Red Hat / Fedora:

sudo yum install incron

/etc/incron.allow在您喜欢的文本编辑器中打开文件-设置为vim

vim /etc/incron.allow

并用您的用户名添加新行(假设是bob),以允许他使用incron

bob

之后打开incron规则编辑器:

incrontab -e

并添加以下行:

/home/userid/drop/ IN_CREATE mv /home/userid/drop/$# /home/userid/current/

这里$#incron内置的通配符该装置命名的新下降备份文件被检测到incron

要测试创建的规则,请将文件添加到/home/userid/drop/目录中,然后检查删除的文件是否已移动到/home/userid/current/目录中。另外检查系统日志:

tail /var/log/syslog

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何以循环方式压缩文件并将其移动到其他目录?

使用python查找PDF和DOC文件并将其移动到其他目录

使用CSV文件将文件移动到其他目录

如何在目录中移动最新文件,然后处理脚本的其余部分

如何使用Azure数据工厂将场所文件移动到其他目录

如何使用Java代码将文件夹(包括子目录和文件)移动到新文件夹中

使用名称对文件进行分组,然后使用awk将其移动到相应目录

使用“ mv”命令移动和重命名时,脚本会将其视为目录而不是新文件名

搜索字符串并删除其他所有内容,然后使用Powershell粘贴到新文件

如何遍历目录并将特定文件移动到其他文件夹

如何在Pygame中使用其他文件时打开新文件?

如何使用bash将子文件夹中的所有文件移动到新文件夹中?

如何通过右键菜单将文件选择移动到新文件夹中?

将.aspx文件移动到新文件夹后,如何设置代码隐藏路径?

如何从其他目录读取文件,然后在c中将其打印到屏幕

如何查找特定文件并将其移动到特定目录?

git:在合并分支之前如何将更改移动到新文件?

如何使用Python在目录中查找最新文件

如何使用FileNameFilter列出目录中的最新文件

重命名多个文件,同时使用UNIX中的动态文件名将它们移动到其他目录

使用inotify-tools递归地在多个目录中连续检测新文件

如何git将文件夹和文件移动到新文件夹并保留历史记录?

如何将具有相似文件名的文件移动到 Python 中的新文件夹中

使用UNIX Shell脚本保留最新文件并将较旧的文件移动到文件夹

如何读取以空格分隔的数据并将其保存到数组,然后以其他顺序将其写入c ++中的新文本文件中

如何通过终端命令将所有文件和目录复制或移动到其他用户

如何根据正则表达式模式将文件移动到新文件夹(尚未创建)?

使用变量创建路径(将文件夹和内容移动到新文件夹)

如何使用 Perl 将大于 300KB 的文件移动到其他位置