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扩展已安装
- 数据库管理员用户的登录名和密码
- 如果没有使用默认端口号,则需要在命令中写明
这是将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