Nextcloudのファイルロック解除手順

Nextcloudを使用していると、稀にファイルがロックされてしまい、ファイルの更新がされなくなる場合があります。

ownCloudよりも頻度はずいぶん減りましたが、Microsoft AccessのようなWindows側でファイルをロックするアプリケーションを使用すると稀に発生するようです。

対応手順を記録しておきたいと思います。


Nextcloudのファイルロック解除手順

Nextcloudフォーラムのこちらの情報を参考にさせて頂きました。

通常のLAMP系サーバの場合、情報の通りの操作かと思います。

ここでは、以前作成したdocker-compose版の解除手順を記録したいと思います。

occファイルスキャン

  1. 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権限で実行する必要があるようです。

  2. occ files:scanとocc files:cleanupを実行します。
    /usr/local/bin/php ./occ files:scan --all
    /usr/local/bin/php ./occ files:cleanup

この状態で、ファイルのロックが解除されNextcloudサーバへアップロードされるかどうか確認します。


ファイルロックテーブルの行削除

強制的にロックを解除するため、MySQL/MariaDBのテーブルを編集しますが、その前にサーバをメンテナンスモードにします。メンテナンス中はサーバにアクセスできなくなります。

  1. appコンテナにて。occコマンドでメンテナンスモードに移行します。
    /usr/local/bin/php ./occ maintenance:mode --on

  2. 別のターミナル(コマンドプロンプト)を開き、dbコンテナでbashを起動します。
    docker-compose exec db bash

  3. mysqlコマンドを起動します。パスワードはdocker-compose.yamlファイルに記述したもの(Windows)、またはdocker-compose起動時に指定したもの(Linux、Mac)を使用します。
    mysql -u root -p
  4. nextcloudデータベースのoc_file_locksテーブルの行を削除します。
    use nextcloud;
    delete from oc_file_locks where 1;

  5. appコンテナでメンテナンスモードを終了します。
    /usr/local/bin/php ./occ maintenance:mode --off

もし、それでもファイルがアップロードされない場合。

ファイル名を変更すると直る場合があるようです。

スポンサーリンク

フォローする

スポンサーリンク

コメント

  1. 通りすがり より:

    参考にさせていただいております。
    通りすがりで恐縮ですが、「ファイルロックテーブルの行削除」作業の最後の手順
    『appコンテナでメンテナンスモードを終了します。』の部分について、

    /usr/local/bin/php ./occ maintenance:mode –off

    パラメータの誤りではないかと思うのですが、ご確認いただけますでしょうか。

    • hide より:

      通りすがり さん はじめまして。
      コメント頂きまして、誠にありがとうございます。

      通りすがりさんの仰るとおり、メンテナンスモードの終了コマンドが間違っておりました。
      記事を修正致しました!
      ご指摘頂きまして、ありがとうございました。