如果文件打開,請勿將修改事件傳送至 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即使您稍後不進行任何更改,也會發生這種情況。

相關內容