概要

Nextcloudでは、ファイルの保存の際にファイルのロックを行いファイルに不整合が起きないようになっています。

しかし、このロックがうまく解除されないためにファイルを書き換えられなくなるなどの不具合が発生します。

今回は、このようなロックが発生した際の解除方法を紹介します。

環境

  • Nextcloud 16

ロックの仕組み

Nextcloudでは、ファイルの実体はファイルシステムに保存されていますが、どんなファイルが保存されているのかなどの情報はデータベースに保存されています。
そのため、ファイルのロックの情報もデータベースに記録されています。

そこで、ロックを解除するにはデータベースを操作します。

ロックの解除

色々と調べてみるとロックの解除は、Nextcloudを操作するスクリプトであるoccファイルを使ってもできるようですが、その場合一度ファイルを全てスキャンする必要があり、私の場合200GB以上のファイルが保存されているのですが、全てスキャンしようとすると非常に時間がかかるため、この方法は使いたくありません。

そこで、強引ですがデータベースに保存されているロックの情報を直接操作する方法を紹介します。

私の環境では、データベースにPostgresqlを使用しているのですが、おそらくMySQLでも動くと思います。
次のSQLをデータベース上で実行し、ロックの情報を削除します。

DELETE FROM oc_file_locks WHERE lock=0;

これで、ロックが解除されファイルの操作ができるようになったと思います。

さいごに

Nextcloudは、少し使う分には問題はないのですが大量のファイルを同期させようとしたり、アップロードしたりすると途端に調子が悪くなるように感じています。
しかし、使いこなせればとてもいいツールだと思うので、このような方法を身につけて、Nextcloudを使いこなせるようになりたいと思います。