Nextcloudを使用していると、稀にファイルがロックされてしまい、ファイルの更新がされなくなる場合があります。
ownCloudよりも頻度はずいぶん減りましたが、Microsoft AccessのようなWindows側でファイルをロックするアプリケーションを使用すると稀に発生するようです。
対応手順を記録しておきたいと思います。
Nextcloudのファイルロック解除手順
Nextcloudフォーラムのこちらの情報を参考にさせて頂きました。
通常のLAMP系サーバの場合、情報の通りの操作かと思います。
ここでは、以前作成したdocker-compose版の解除手順を記録したいと思います。
occファイルスキャン
- docker-compose execコマンドでappコンテナのbashを起動します。
cd docker\nextcloud docker-compose exec app bash
通常、occコマンドはwww-dataユーザ権限で実行(sudo -u www-data php occ)しますが、Nextcloudオフィシャルdockerイメージは、root権限で実行する必要があるようです。
- occ files:scanとocc files:cleanupを実行します。
/usr/local/bin/php ./occ files:scan --all /usr/local/bin/php ./occ files:cleanup
この状態で、ファイルのロックが解除されNextcloudサーバへアップロードされるかどうか確認します。
ファイルロックテーブルの行削除
強制的にロックを解除するため、MySQL/MariaDBのテーブルを編集しますが、その前にサーバをメンテナンスモードにします。メンテナンス中はサーバにアクセスできなくなります。
- appコンテナにて。occコマンドでメンテナンスモードに移行します。
/usr/local/bin/php ./occ maintenance:mode --on
- 別のターミナル(コマンドプロンプト)を開き、dbコンテナでbashを起動します。
docker-compose exec db bash
- mysqlコマンドを起動します。パスワードはdocker-compose.yamlファイルに記述したもの(Windows)、またはdocker-compose起動時に指定したもの(Linux、Mac)を使用します。
mysql -u root -p
- nextcloudデータベースのoc_file_locksテーブルの行を削除します。
use nextcloud; delete from oc_file_locks where 1;
- appコンテナでメンテナンスモードを終了します。
/usr/local/bin/php ./occ maintenance:mode --off
もし、それでもファイルがアップロードされない場合。
ファイル名を変更すると直る場合があるようです。
コメント
参考にさせていただいております。
通りすがりで恐縮ですが、「ファイルロックテーブルの行削除」作業の最後の手順
『appコンテナでメンテナンスモードを終了します。』の部分について、
/usr/local/bin/php ./occ maintenance:mode –off
パラメータの誤りではないかと思うのですが、ご確認いただけますでしょうか。
通りすがり さん はじめまして。
コメント頂きまして、誠にありがとうございます。
通りすがりさんの仰るとおり、メンテナンスモードの終了コマンドが間違っておりました。
記事を修正致しました!
ご指摘頂きまして、ありがとうございました。