Nextcloud

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

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

OCC命令行工具详解

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

转换数据库类型需要以下条件:

  • 所需的数据库及其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(联合云共享服务器的同步)

该命令只在Federation插件被激活后可用

同步所有已连接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 <来源用户>
<目标用户>

外部存储

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

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

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服务器。

(2)

本文由 橙叶博客 作者:FrankGreg 发表,转载请注明来源!

热评文章

评论:

3 条评论,访客:3 条,博主:0 条
  1. 爱人动物
    爱人动物发布于: 

    请教一下,使用NEXTCLOUD管理员可以监控用户上传文件及分享文件么?

  2. 一曲长歌辞烟雨
    一曲长歌辞烟雨发布于: 

    nextcloud可以配置离线下载用于下载一些bittorrent、ed2k资源麽?

    • T先生
      T先生发布于: 

      可以,但是不如直接用aria2之类的离线下载。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据