mattintosh note

どこかのエンジニアモドキの備忘録

Linux版Dropboxで大量ファイル削除後に同期されなくなる問題を解消する

毎日特に不自由なく UbuntuDropbox を使用していたが、ある日を境に同期されなくなってしまった。macOSiOS は同期されているので LinuxDropbox のアップグレードか何かで動かなくなってしまったかと思い、バージョンを確認してみたがアップグレードされた形跡は無い。Dropbox の無料接続数の上限にでも達したかと思い確認してみるがこちらも問題は無い。

普段はでデスクトップ環境にログインした際に自動的にデーモンが起動するようになっているが、一旦コマンドラインから停止・起動してみる。

Terminal

$ 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.conf100000 に設定するべしとあるが、/etc/sysctl.conf に追記したくないので /etc/sysctl.d/99-dropbox.conf を新規作成してそちらで定義する。

Terminal

$ echo 'fs.inotify.max_user_watches = 1048576' | sudo tee /etc/sysctl.d/99-dropbox.conf

設定を反映させる。

Terminal

$ sudo sysctl -p /etc/sysctl.d/99-dropbox.conf
fs.inotify.max_user_watches = 1048576

暫くすると Dropbox の同期が再開する。

複数サーバ間でファイルの同期を行ったりするのに lsyncd を使うサーバなんかでは fs.inotify.max_user_watches を別途設定することがあるのだけど普段使いのマシンでやることになるとは思わなかった。