日々精進

新しく学んだことを書き留めていきます

Windows Subsystem for Linuxでinotifywaitを実行すると「Invalid argument」エラー

原因はWindows Subsystem for Linuxがinotifywaitが使っているファイル監視APIに対応していないため。 Windows 10 Insiders build #14942で対応済らしいが、俺が使っているWindows10のバージョンは14942より低いのでだめだった。。 本当はファイル変更通知を貰ってサーバとのファイル同期をしたかったが、以下のように1秒おきにrsyncを実行することで解決した。

while true; do
  sleep 1
  rsync -avz --exclude '.git' --exclude '.idea' $1 $2 > /dev/null
done

ファイルの同期について、以下の方法も試したが、だめだった。。

WinSCPでファイルのミラー機能を使ってみたが、コマンドを実行した時一度しか同期してくれず、ずっと同期し続けてくれなかった。 https://oxynotes.com/?p=6618

cwRsyncを使ってみたが色々ハマって結局うまく動きませんでした。 d.hatena.ne.jp

最終的にWindows Subsystem for Linux+rsyncでうまくいったのでおすすめです。

参考:

blogs.msdn.microsoft.com

github.com

kledgeb.blogspot.com

dynabook.com