![如果文件已打开,则不要向 inotifywait 发送修改事件](https://linux22.com/image/1600409/%E5%A6%82%E6%9E%9C%E6%96%87%E4%BB%B6%E5%B7%B2%E6%89%93%E5%BC%80%EF%BC%8C%E5%88%99%E4%B8%8D%E8%A6%81%E5%90%91%20inotifywait%20%E5%8F%91%E9%80%81%E4%BF%AE%E6%94%B9%E4%BA%8B%E4%BB%B6.png)
我在 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_TO
,MOVED_FROM
用于添加到树中、移出树或只是重命名的文件。
[*] 例如,实验中,这种MODIFY
情况会发生多次(可能每次对文件执行写入操作时都会发生),此时复制文件可能会复制处于不一致状态的文件。同样,OPEN
即使您稍后不进行任何更改,也会发生这种情况。