ファイルが開かれている場合は、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後で変更を加えなくても、が発生します。

関連情報