ownCloud/Nextcloud OCC命令行工具详解(2)

Posted by 橙叶 on Mon, May 29, 2017
occ命令是ownCloud/Nextcloud的命令行界面。您可以使用occ执行许多常见的服务器操作,例如安装和升级ownCloud/Nextcloud,管理用户,加密,密码,LDAP设置等。

OCC命令行工具详解

[ssbluelist] [/ssbluelist]

Dav命令

用于创建地址簿、日历,或在从8.2版本升级至9.0版本时迁移地址簿。

只有使用以下插件时才有必要使用Dav命令:

dav
 dav:create-addressbook        #创建一个地址簿
 dav:create-calendar           #创建一个日历
 dav:migrate-addressbooks      #将通讯录从通讯录插件迁移至主通讯录
 dav:migrate-calendars         #将日历从日历插件迁移至主日历
 dav:sync-birthday-calendar    #同步生日日历
 dav:sync-system-addressbook   #将用户同步到系统地址簿
#主通讯录、主日历指ownCloud/Nextcloud自带的通讯录、日历功能dav:create-addressbook

创建/迁移日历和地址簿

dav:creat-calendar和dav:create-addressbook
的具体命令格式:
sudo -u www-data php occ dav:create-addressbook [用户] [名称]

举例:为用户ChengYe创建名为ChengYebook的地址簿 sudo -u www-data php occ dav:create-addressbook ChengYe ChengYebook

类似的,创建一个新日历的命令为:

sudo -u www-data php occ dav:create-calendar [用户] [名称]

举例:为用户ChengYe创建名为Calendar的日历
sudo -u www-data php occ dav:create-calendar ChengYe Celendar

用户ChengYe会立刻在其日历和联系簿上看到新创建的日历:

在9.0中,CalDAV服务器已经集成到内核中。升级时,现有的日历和联系人会自动迁移。如果出现问题,可以尝试手动迁移。首先删除任何部分迁移的日历或地址簿。然后运行此命令迁移用户的联系簿:

sudo -u www-data php occ dav:migrate-addressbooks [user]

迁移用户的日历:

sudo -u www-data php occ dav:migrate-calendars [user]

有关故障排除和报告问题的帮助,请参阅 ownCloud 9.0 - calendar migration analysis

同步生日至日历

使用
dav:sync-birthday-calendar
将所有生日添加到与您共享的地址簿中的日历。此示例为从用户bernie同步到您的日历:
sudo -u www-data php occ dav:sync-birthday-calendar bernie
使用
dav:sync-system-addressbook
将所有用户同步到系统地址簿:
sudo -u www-data php occ dav:sync-system-addressbook

数据库转换

我们一般使用SQLite来进行小范围(用户单一且不使用同步客户端)的基本测试。但是SQLite的性能不高,对于多个用户的生产服务器,应该使用MariaDB、MySQL或PostgreSQL作为数据库。可以使用OCC命令行工具将SQLite转换为其它类型的数据库。
db
 db:convert-type           #将Nextcloud数据库转换为其它类型
 db:generate-change-script #从当前连接的数据库生成更改脚本至db_structure.xml
转换数据库类型需要以下条件: [ssbluelist]
  • 所需的数据库及其PHP扩展已安装
  • 数据库管理员用户的登录名和密码
  • 如果没有使用默认端口号,则需要在命令中写明
[/ssbluelist]

这是将SQLite转换为MySQL / MariaDB的示例:

sudo -u www-data php occ db:convert-type mysql oc_dbuser 127.0.0.1
oc_database

加密

OCC包括一组完整的管理加密命令:
encryption
 encryption:change-key-storage-root   #修改密钥存储根目录
 encryption:decrypt-all               #禁用服务器端加密并解密所有文件
 encryption:disable                   #禁用服务器端加密
 encryption:enable                    #启用服务器加密
 encryption:enable-master-key         #启用主密钥。仅适用于没有现有加密数据的新安装!还没有办法再次禁用它。
 encryption:encrypt-all               #加密所有用户的所有文件
 encryption:list-modules              #列出所有可用的加密模块
 encryption:migrate                   #初始迁移到2.0加密方式
 encryption:set-default-module        #设置默认模块加密
 encryption:show-key-storage-root     #显示当前密钥存储根目录
 encryption:status                    #列出当前的加密状态
使用
encryption:status
选项可显示是否有激活的加密。要启用加密,必须先启用Encryption 插件,然后运行
encryption:enable

启用Encryption插件

sudo -u www-data php occ app:enable encryption
也可以在插件管理页面激活加密插件。

启用加密

sudo -u www-data php occ encryption:enable
sudo -u www-data php occ encryption:status
 - enabled: true
 - defaultModule: OC_DEFAULT_MODULE

转移加密密钥

encryption:change-key-storage-root
用于将加密密钥移动到不同的文件夹。在末尾指定新文件夹的位置:
sudo -u www-data php occ encryption:change-key-storage-root <新文件夹>
举例:
sudo -u www-data php occ encryption:change-key-storage-root /etc/oc-keys
你可以通过以下命令来查看密钥文件的位置:
sudo -u www-data php occ encryption:show-key-storage-root
Current key storage root:  default storage location (data/) #密钥当前位于默认目录 (data/)

加密模块

使用
encryption:list-modules
可列出所有加密模块(只有启用加密插件后,才会显示模块列表)。使用
encryption:set-default-module [模块名称]
来设置默认的加密模块。

加密所有用户文件

使用
encryption:encrypt-all
来加密所有用户的文件,加密之前,必须要将Nextcloud实例设置为维护模式以阻止所有用户的操作,直到加密完成。

文件的解密

encryption:decrypt-all
可用于加密所有用户的文件,也可以单独加密某个用户的文件。

示例:

sudo -u www-data php occ encryption:decrypt freda #解密用户freda的文件

用户必须在其个人页面上启用恢复密钥。

同样的,解密之前,必须要将Nextcloud实例设置为维护模式以阻止所有用户的操作,直到解密完成。

创建主密钥

encryption:enable-master-key
创建一个新的主密钥,用于加密所有用户(而不是单个用户)的数据。这对于启用单点登录特别有用。仅在没有数据的刚安装的实例上使用,或者在尚未启用加密的系统上使用此功能。它无法再次被禁用。

密钥迁移

encryption:migrate
可用于在Nextcloud版本升级后迁移加密密钥。可以为特定用户迁移密钥(多个用户需用空格隔开)。

Federation Sync(联合云共享服务器的同步)

[infobox]该命令只在Federation插件被激活后可用[/infobox]

同步所有已连接Nextcloud服务器的地址簿:

federation:sync-addressbooks  #同步所有已连接Nextcloud服务器的地址簿

在Nextcloud中,共享的服务器之间可以共享用户的通讯录,并在共享对话框中自动补全用户名。使用以下命令来同步联合服务器:

sudo -u www-data php occ federation:sync-addressbooks

文件操作

occ有三个用于管理Nextcloud中文件的命令:
files
 files:cleanup              #清楚文件缓存
 files:scan                 #重新扫描文件系统
 files:transfer-ownership   #将所有文件和文件夹都移动到另一个文件夹
files:scan
命令扫描新文件并更新文件缓存。您可以重新扫描所有文件,各个用户,可以使用空格分隔多个用户,并限制搜索路径。如果不使用
--quiet
,统计信息将在扫描结束时显示:
sudo -u www-data php occ files:scan --help
  格式:
  files:scan [-p|--path="..."] [-q|--quiet] [-v|vv|vvv --verbose] [--all]
  [user_id1] ... [user_idN]

参数: user_id #扫描所指定的用户(一个或多个,多个用户ID之间要使用空格分开)的所有文件

选项: –path #限制扫描路径 –all #扫描所有已知用户的所有文件 –quiet #不输出统计信息 –verbose #在扫描过程中显示正在处理的文件和目录 –unscanned #仅扫描以前未扫描过的文件

-vv

-vvv

的详细级别会自动重置为

-v

关于选项

--unscanned

:一般情况下,这个命令会通过后台任务(使用cron实现)执行,定期扫描文件。这个“扫描”选项可以从CLI触发。

指定扫描位置

当使用
--path
选项时,该路径必须包含以下部分:
"user_id/files/path"
  或
"user_id/files/mount_name"
  或
"user_id/files/mount_name/path"
其中,
files
是必须要加上的,不可忽略。

示例:

--path="/alice/files/Music" #指向用户alice的Music文件夹

在上面的示例中,

user_id

对应的用户是唯一的(也就是alice),同样,

--path

--all

的参数也是唯一的(有且仅能有一个参数)。

清除缓存

files:cleanup
通过删除存储表中没有匹配条目的文件来清理服务器的文件缓存。

用户间文件迁移

您可以将所有文件和共享从一个用户传输到另一个用户。这在删除用户之前很有用:
sudo -u www-data php occ files:transfer-ownership <来源用户> 
<目标用户>

外部存储

[infobox]该命令只在External storage support插件 (files_external)被激活后可用[/infobox]

用于管理外部存储的命令:

files_external
 files_external:applicable  #管理可使用挂载的用户和组(不是很明白)
 files_external:backends    #显示可用的身份验证方式和存储后端
 files_external:config      #管理挂载点的后端配置
 files_external:create      #创建一个新的挂载配置
 files_external:delete      #删除一个已挂载的外部存储
 files_external:export      #导出挂载配置
 files_external:import      #导入挂载配置
 files_external:list        #列出已配置完成的外部存储
 files_external:option      #管理外部存储的挂载选项
 files_external:verify      #校验挂载配置
 files_external:notify      #监听配置的外部安装的活动更新通知

这些命令的功能Nextcloud Web GUI中的功能相同,除此之外还有两个新功能:

files_external:export

files_external:import

使用

files_external:export

将所有管理员挂载导出到stdout,或使用

files_external:export [user_id]

导出指定的Nextcloud用户的挂载。

使用

files_external:import [filename]

导入旧的JSON配置,并将外部装载配置复制到另一台Nextcloud服务器。



comments powered by Disqus