LoginSignup
4
5

More than 5 years have passed since last update.

メモ: linuxserver/nextcloud でファイルのスキャンが必要になった場合の手順

Posted at

TL;DR

我が家では Nextcloud を Docker で運用していますが、サクッと構築したかったので Docker Image には nextcloud ではなく linuxserver/nextcloud を利用しています。
Nextcloud 配下のファイルやディレクトリを Nextcloud 以外の手段(SMB, FTP, SCP etc...)で追加/変更/削除すると、その変更が Nextcloud 上に自動的に反映されません。
このため、 occ というコマンドを使ってファイルとディレクトリをスキャンする必要があるのですが、そのやり方が少しだけ普通とは違っていたのでメモです。

前提条件

  • Docker Image: linuxserver/nextcloud:latest (2018/07/01 時点のもの)
  • Version: Nextcloud 13.0.5 (12 系でも同じ手順でできたはず。。。)

解決したいこと

linuxserver/nextcloud を用いた Docker Container で、 Nextcloud 管理下のディレクトリ内にあるファイルやサブディレクトリについて、 Container 上で追加/削除されたファイルが Nextcloud に反映されていないのを反映させたい。

やり方

Container ID を調べる

対象となる Docker Container(linuxserver/nextcloud) の Container ID を調べます。

# docker ps
CONTAINER ID        IMAGE                          COMMAND             CREATED             STATUS              PORTS                            NAMES
317d6fb4633e        linuxserver/nextcloud:latest   "/init"             3 weeks ago         Up 3 weeks          80/tcp, 0.0.0.0:10443->443/tcp   nextcloud_20180701

上記例では 317d6fb4633e が Container ID です。

Nextcloud の Container にログインする

上記で調べた Container ID を利用して、 linuxserver/nextcloud の Container にログインします。

# docker exec -it 317d6fb4633e bash
$ hostname
nextcloud

ファイルとディレクトリをスキャンする

occ コマンドを用いてファイルとディレクトリをスキャンします。
occ ファイルのパスと、実行時に sudo -u abc する点が通常とは異なります。

$ sudo -u abc php /config/www/nextcloud/occ files:scan --all

Scanning files for 2 users
Starting scan for user 1 out of 2 (ktooi)
Starting scan for user 2 out of 2 (johndoe)

+---------+-------+--------------+
| Folders | Files | Elapsed time |
+---------+-------+--------------+
| 335     | 2880  | 00:00:10     |
+---------+-------+--------------+

以上でスキャンは完了です。
Nextcloud 上からファイルやディレクトリを確認すると、反映されていなかったファイルやディレクトリの追加/削除が反映されているはずです。

おしまい。。。?

追伸

Container ID まで調べたら、 Container にログインせずに直接 occdocker exec すればいいんじゃね?って投稿ボタンを押す直前に思った。

# docker exec -it 317d6fb4633e sudo -u abc php /config/www/nextcloud/occ files:scan --all

Scanning files for 2 users
Starting scan for user 1 out of 2 (ktooi)
Starting scan for user 2 out of 2 (johndoe)

+---------+-------+--------------+
| Folders | Files | Elapsed time |
+---------+-------+--------------+
| 335     | 2880  | 00:00:11     |
+---------+-------+--------------+

うん、らくちん。

Container Name を固定にしていれば(例では nextcloud_20180701)、 Container ID も

$ docker ps --filter status=running --filter name=nextcloud_20180701 --format {{.ID}}
317d6fb4633e

のように一撃で取得できるので、

$ docker exec -it $(docker ps --filter status=running --filter name=nextcloud_20180701 --format {{.ID}}) sudo -u abc php /config/www/nextcloud/occ files:scan --all

というコマンド一発で一発で完了です。
これなら Docker ホストの Cron にでも仕込んで定期的にファイルをスキャンとか簡単にできますね。

本当におしまい。

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5