Nextcloud

【techblog】Nextcloudの管理用CLI「occ」詳細: ファイル管理に関するコマンド

はじめに

NextcloudにはCLI環境としてoccというものがあり、さまざまな設定、管理を行うことができます。 ここではoccで使える様々なコマンド群のうち、ファイル管理に関するコマンド群についてまとめてみます。

※occ の使い方については、 【techblog】Nextcloudの管理用CLI「occ」コマンドについての記事を参照ください。
※occ の共通オプションについては、【techblog】Nextcloudの管理用CLI「occ」詳細: Nextcloud自体に対するコマンド群、共通オプション設定の記事を参照ください。

環境について

ここで記載するoccを実行するNextcloudのバージョンは、2019年3月16日現在で最新の15.0.5を利用します。
WebサーバはNginxを利用した環境で実施しております。ApacheをWebサーバとして利用している場合は、sudo -u のユーザIDをapacheに読み替えてください。

アプリ管理に関するコマンド群

アプリ管理に関するコマンドは以下のようなものがあります。

  • files:cleanup
  • files:scan
  • files:scan-app-data
  • files:transfer-ownership

files:scan

Nextcloudサーバに保管しているファイルをスキャンして、Nextcloudに未登録のファイルがあった場合にはNextcloud管理のファイルキャッシュとして取り込みを行います。Nextcloudのデータディレクトリのほか、SMB/CIFSなど連携設定されている外部ストレージもスキャン対象となります。

使い方

files:scan [オプション] <ユーザID> ...

オプション

  • --all
    Nextcloudで認識されているユーザの全てのファイルを再スキャンします。
  • -p, --path=PATH
    指定したファイルパスのみに限定して再スキャンします。対象ユーザIDは指定したパスに基づいて決まり、--allオプションは無視されます。
    指定するパスは以下のように構成されていなければなりません。
    ※filesディレクトリは必須です。
"user_id/files/path"
  or
"user_id/files/mount_name"
  or
"user_id/files/mount_name/path"
  • --unscanned
    Nextcloudは通常はcronを使ってバックグラウンドジョブで定期的に未調査フォルダのファイルスキャンを実施します。このオプションを指定するとこのバックグラウンドジョブを手動起動することができます。
  • --shallow
    指定したディレクトリのみスキャン対象とし、配下のサブディレクトリを再帰的にスキャンしません。
  • --home-only
    Nextcloudのデータディレクトリに限定してスキャンします。外部ストレージはスキャンしません。
  • -v, -vv, -vvv, --verbose
    ファイルスキャン状況の詳細を出力します。どれを指定しても出力結果は同じになります。
  • --output=[OUTPUT]
    スキャン結果の出力フォーマットを指定します。指定できるフォーマットは次のとおりです。

    • plain: 普通の出力 (オプション未指定の場合のデフォルト)
    • json: JSON形式
    • json_pretty: 整形されたJSON形式

# 現状ではどの出力フォーマットを指定しても出力がみんな同じようです。

使用例

①全てのユーザの全ての利用可能なアプリのリストを出力する。

$ sudo -u nginx php /var/www/html/nextcloud/occ files:scan --all
Starting scan for user 1 out of 5 (admin)
Starting scan for user 2 out of 5 (hanako.suzuki)
Starting scan for user 3 out of 5 (ichiro.satoh)
Starting scan for user 4 out of 5 (jiro.tanaka)
Starting scan for user 5 out of 5 (miki.morita)
+---------+-------+--------------+
| Folders | Files | Elapsed time |
+---------+-------+--------------+
| 16      | 27    | 00:00:00     |
+---------+-------+--------------+

②/ichiro.satoh/files/Photosディレクトリを再スキャンし、ファイルスキャン状況の詳細を出力する。

$ sudo -u nginx php /var/www/html/nextcloud/occ files:scan --path=/ichiro.satoh/files/Photos -v
Starting scan for user 1 out of 1 (ichiro.satoh)
    Folder    /ichiro.satoh/files/Photos
    File    /ichiro.satoh/files/Photos/Coast.jpg
    File    /ichiro.satoh/files/Photos/Hummingbird.jpg
    File    /ichiro.satoh/files/Photos/Nut.jpg
    File    /ichiro.satoh/files/Photos/Nextcloud Community.jpg

+---------+-------+--------------+
| Folders | Files | Elapsed time |
+---------+-------+--------------+
| 1       | 4     | 00:00:00     |
+---------+-------+--------------+

③admin、ichiro.satohユーザの保有ディレクトリを再スキャンする。

$ sudo -u nginx php /var/www/html/nextcloud/occ files:scan admin ichiro.satoh
Starting scan for user 1 out of 2 (admin)
Starting scan for user 2 out of 2 (ichiro.satoh)
+---------+-------+--------------+
| Folders | Files | Elapsed time |
+---------+-------+--------------+
| 16      | 27    | 00:00:00     |
+---------+-------+--------------+

④全体的に未調査フォルダをスキャンするバックグラウンドジョブを起動する。

$ sudo -u nginx php /var/www/html/nextcloud/occ files:scan --all --unscanned
Starting scan for user 1 out of 5 (admin)
Starting scan for user 2 out of 5 (hanako.suzuki)
Starting scan for user 3 out of 5 (ichiro.satoh)
Starting scan for user 4 out of 5 (jiro.tanaka)
Starting scan for user 5 out of 5 (miki.morita)
+---------+-------+--------------+
| Folders | Files | Elapsed time |
+---------+-------+--------------+
| 0       | 0     | 00:00:00     |
+---------+-------+--------------+

files:cleanup

Nextcloudのストレージテーブルに一致しないファイルエントリを削除し、Nextcloudのファイルキャッシュを整理します。利用中のストレージ内のファイルとの整合をとるときにはfiles:scanコマンドを利用します。

使い方

files:cleanup

使用例

①Nextcloudのファイルキャッシュを整理する。

$ sudo -u nginx php /var/www/html/nextcloud/occ files:cleanup
0 orphaned file cache entries deleted

files:transfer-ownership

あるユーザが所有しているファイル、共有設定を別のユーザに転送します。ユーザを削除する前にファイルを引き継ぐ際に役に立ちます。転送元のファイルは全て削除され、転送先のホームディレクトリにtransferred from <転送元ユーザID> on YYYY-MM-DD hh-mm-ssのフォルダ名として転送されます。

使い方

files:transfer-ownership [オプション] <転送元ユーザID> <転送先ユーザID>

転送元ユーザID

ファイル、共有設定の転送元となるユーザIDを指定します。

転送先ユーザID

ファイル、共有設定の転送先となるユーザIDを指定します。

オプション

  • --path=PATH
    指定した転送元ディレクトリのみ転送します。パスは転送元ユーザのホームディレクトリを`/’として指定します。1つしか指定できないので複数ディレクトリを転送する場合はコマンドを繰り返して実行します。

使用例

①ichiro,satohユーザの全てのファイル、共有設定をjiro.tanakaユーザに転送する

$ sudo -u nginx php /var/www/html/nextcloud/occ files:transfer-ownership ichiro.satoh jiro.tanaka
Analysing files of ichiro.satoh ...
   16 [============================]
Collecting all share information for files and folder of ichiro.satoh ...
    0 [>---------------------------]
Transferring files to jiro.tanaka/files/transferred from ichiro.satoh on 2019-03-16 03-36-56 ...
Restoring shares ...
    0 [>---------------------------]

②adminユーザの/Dataフォルダ以下の全てのファイル、共有設定をichiro.satohユーザに転送する。

$ sudo -u nginx php /var/www/html/nextcloud/occ files:transfer-ownership --path=/Data admin ichiro.satoh
Analysing files of admin ...
    4 [============================]
Collecting all share information for files and folder of admin ...
    0 [>---------------------------]
Transferring files to ichiro.satoh/files/transferred from admin on 2019-03-17 01-59-41 ...
Restoring shares ...
    0 [>---------------------------]

files:scan-app-data

アプリで利用されているデータが保存されているディレクトリ(=[データディレクトリ]/appdata_*)を再スキャンしてアプリデータの更新を行います。

使い方

files:scan-app-data [オプション]

オプション

  • --output=[OUTPUT]
    スキャン結果の出力フォーマットを指定します。指定できるフォーマットは次のとおりです。

    • plain: 普通の出力 (オプション未指定の場合のデフォルト)
    • json: JSON形式
    • json_pretty: 整形されたJSON形式

# 現状ではどの出力フォーマットを指定しても出力がみんな同じようです。

使用例

①アプリデータを再スキャンしてアプリデータの更新を行う。

$ sudo -u nginx php /var/www/html/nextcloud/occ files:scan-app-data

Scanning AppData for files

+---------+-------+--------------+
| Folders | Files | Elapsed time |
+---------+-------+--------------+
| 58      | 178   | 00:00:00     |
+---------+-------+--------------+