最终,我想检测到一个新的备份文件被放到目录中,然后将该新文件移动到另一个位置进行其他操作。
当没有人登录到服务器并且我用来启动操作的脚本将由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打开,以解决其他两种解决方案。
提前致谢。
知识管理
您所需要的就是incron
。incron
如果您有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] 删除。
我来说两句