如果文件已打开,则不要向 inotifywait 发送修改事件

如果文件已打开,则不要向 inotifywait 发送修改事件

我在 Windows 10 Pro 上使用 VSC 作为编辑器,并希望在文件更改时同步到远程服务器。

我使用 Debian 客户系统安装了 WSL

如果我运行这个脚本

while inotifywait -r -e modify,create,delete /path/to/folder; do
  rsync -rltzv --progress --chmod=0600 --exclude=.git/ --exclude=.vscode /path/to/folder [email protected]:~/remote/folder;
done;

rsync 不仅在我在 VSC 中保存文件时启动,而且在打开文件时也会启动。虽然这并不重要,但它很烦人,而且浪费带宽。

我能做些什么来阻止它吗?

编辑

我不知道这是什么原因造成的,但在我的设置下,这个问题似乎不再发生在我的机器上。但我没有改变任何东西

答案1

您监控的事件过多[*]。重要的事件包括:

  • CLOSE_WRITE,因为将数据放入文件需要关闭它们。您也可以认为此时文件处于一致状态。
  • DELETE,对于已删除的文件
  • MOVED_TOMOVED_FROM用于添加到树中、移出树或只是重命名的文件。

[*] 例如,实验中,这种MODIFY情况会发生多次(可能每次对文件执行写入操作时都会发生),此时复制文件可能会复制处于不一致状态的文件。同样,OPEN即使您稍后不进行任何更改,也会发生这种情况。

相关内容