はじめに
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 |
+---------+-------+--------------+