毎日特に不自由なく Ubuntu で Dropbox を使用していたが、ある日を境に同期されなくなってしまった。macOS や iOS は同期されているので Linux 版 Dropbox のアップグレードか何かで動かなくなってしまったかと思い、バージョンを確認してみたがアップグレードされた形跡は無い。Dropbox の無料接続数の上限にでも達したかと思い確認してみるがこちらも問題は無い。
普段はでデスクトップ環境にログインした際に自動的にデーモンが起動するようになっているが、一旦コマンドラインから停止・起動してみる。
$ dropbox stop $ dropbox start
暫く待っていると何やらエラーメッセージが出てきた。どうも fs.inotify.max_user_watches
の値が足りないっぽい。「そういえばこの前サーバのバックアップを Dropbox フォルダに保存しちゃって数万ファイルを削除したな…」と思い出したり思い出さなかったり。
Unable to monitor entire Dropbox folder hierarchy. Please run "echo fs.inotify.max_user_watches=100000 | sudo tee -a /etc/sysctl.conf; sudo sysctl -p" and restart Dropbox to fix t he problem.
fs.inotify.max_user_watches
のデフォルト値は 8192
で、エラーメッセージでは /etc/sysctl.conf
で 100000
に設定するべしとあるが、/etc/sysctl.conf
に追記したくないので /etc/sysctl.d/99-dropbox.conf
を新規作成してそちらで定義する。
$ echo 'fs.inotify.max_user_watches = 1048576' | sudo tee /etc/sysctl.d/99-dropbox.conf
設定を反映させる。
$ sudo sysctl -p /etc/sysctl.d/99-dropbox.conf fs.inotify.max_user_watches = 1048576
暫くすると Dropbox の同期が再開する。
複数サーバ間でファイルの同期を行ったりするのに lsyncd を使うサーバなんかでは fs.inotify.max_user_watches
を別途設定することがあるのだけど普段使いのマシンでやることになるとは思わなかった。