Не отправлять событие изменения в inotifywait, если файл открыт

Не отправлять событие изменения в inotifywait, если файл открыт

Я использую VSC в качестве редактора на Windows 10 Pro и хочу синхронизироваться с удаленным сервером при изменении файла.

Я установил WSL с гостевой системой Debian

Если я запущу этот скрипт

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происходит, даже если вы не вносите никаких изменений позже.

Связанный контент