External Storage Support 应用可以把外部存储服务和设备挂载为 Nextcloud 的辅助存储,也可以允许用户挂载自己的外部存储。
启用
该功能由随 Nextcloud 自动安装的内置应用提供,默认关闭。在“应用”中启用即可。

配置
点击个人资料图标,在下拉菜单选择“设置”,然后在左侧“管理”区域选择“外部存储”,进入挂载配置。
**注意**
也可通过 occ 命令配置外部存储,参阅 occ 文档。
从 Add storage 下拉框选择可用后端,创建新挂载。不同后端所需选项不同,在配置字段中填写。

每个后端可能支持多种身份验证方式,在 Authentication 下拉框选择。不同后端的机制不同,有些专属于后端,有些较通用,详见外部存储身份验证机制。
选择身份验证机制后,配置字段会相应变化。例如 SFTP 支持用户名和密码、登录凭据(保存在会话中)及 RSA 公钥。

必填字段以红色边框标出。填完全部必填项后自动保存。存储行旁绿色圆点表示可使用,红色或黄色图标表示无法连接,应检查配置及网络。
发生错误后,该存储会被标记为不可用十分钟。点击彩色图标或重新加载管理页可重新检查。
文件夹名称
Folder name 是该文件夹在 Nextcloud 内显示给用户的名称。
名称不能包含路径或子目录,因此不要包含斜杠。
在挂载路径中使用变量
外部存储挂载机制支持路径变量。
$user 自动替换为当前登录用户的用户名。
$home 自动替换为可配置的主目录变量,需要 LDAP;详见 LDAP 配置的特殊属性。
下例中,alice 登录后,挂载点解析为 /opt/userDirectories/alice/myPictures。

用户和组权限
用户个人设置中配置的存储只对创建者可用。管理设置中配置的存储默认对所有用户可用,也可在 Available for 字段限制用户和组。

挂载选项
三点菜单显示设置与垃圾桶图标。垃圾桶删除挂载点;设置按钮可分别配置各挂载点:
– 加密。
– 预览。
– 启用共享。
– 文件系统检查频率:控制服务器收到外部路径的 WebDAV PROPFIND 请求时如何重新扫描。Once per direct access 每次直接访问只浅层扫描;Never 完全跳过。该设置不会让 Nextcloud 或桌面客户端自动轮询,详见下文。
– Mac NFD 兼容性。
– 只读。
仅启用 Encryption 应用时才显示加密选框。其他 Nextcloud 服务器作为外部存储时不支持服务端加密。
Enable Sharing 允许管理员对各挂载点启用或禁用共享。禁用时内部保留共享信息,以便重新启用后恢复。默认禁用共享。

使用自签名证书
挂载外部存储使用自签名证书时,必须将证书导入用户个人设置。详见原文链接的 Nextcloud HTTPS External Mount 说明。
可用存储后端
外部存储应用提供以下后端:
– Amazon S3。
– FTP/FTPS。
– 本地存储。
– Nextcloud。
– OpenStack Object Storage。
– SFTP。
– SMB/CIFS。
– WebDAV。
**注意**
这些后端需要不阻止访问或配置正确的 SELinux 环境,参阅 SELinux 配置。
允许用户挂载外部存储
勾选 Enable User External Storage,并选择允许的后端。注意,这可能使用户对网络中的其他服务建立任意连接!

检测 Nextcloud 之外的修改
直接在外部存储上新增、修改或删除文件时,Nextcloud 不会立即得知。其内部索引 filecache 只有在 Nextcloud 扫描时才更新;扫描之前,索引过期,Nextcloud、桌面客户端和移动应用都看不到这些变化。
文件系统检查频率的工作方式
该挂载选项控制 WebDAV PROPFIND 请求访问外部存储路径时的服务端行为:
– Once per direct access:对某目录的 PROPFIND 请求触发该目录层级重扫,并更新 filecache。
– Never:PROPFIND 不触发重扫,始终返回内部索引内容。
它只控制 PROPFIND 期间的服务器行为,不触发后台轮询,也不改变桌面或移动客户端行为。
重扫依赖用户操作,例如在网页或移动端打开目录、客户端发出 PROPFIND,所以深层目录的变更检测仍然随机且不可靠。
桌面客户端为何遗漏深层变化
桌面同步客户端每轮只对同步目录根部发出 PROPFIND,扫描全树代价太高。它依赖 etag 传播:文件变化时,直至根目录的所有父目录 etag 都必须更新,客户端才能沿线找到变化。
Nextcloud 之外的修改不会更新 etag,客户端在根部看不到线索,也就不会追踪到变化文件。
可靠检测外部变化
按存储类型有两种方法:
A. SMB/CIFS:使用更新通知
files_external:notify 监听 SMB 服务器自身发送的变化事件。事件到达后,Nextcloud 重扫相关路径并把 etag 变化传播到根部,桌面客户端下一轮同步即可检测。
occ files_external:notify <mount_id>
设置细节、认证要求和降低同步延迟的方法见 SMB/CIFS 文档。
B. 其他存储:cron 定期重扫
不支持推送通知的存储,可建立 cron 任务,使用挂载 ID 定期扫描:
sudo -E -u www-data php occ files_external:scan <mount_id>
用 occ files_external:list 查找挂载 ID。完整 files_external:scan 用法见 occ 文档。常见间隔为十五分钟,可在及时性与服务器负载之间调整。
**注意**
Nextcloud AIO 对应命令为:
sudo docker exec --user www-data -i nextcloud-aio-nextcloud php occ files_external:scan <mount_id>
限制:无法可靠检测重命名
无论通过 cron 还是直接访问时的频率设置重扫,扫描器都不能可靠判断条目已重命名。它会把旧名称视为删除、新名称视为新建,导致原条目相关的共享、标签、评论和活动历史从数据库永久删除。
**警告**
用户直接在外部存储重命名文件或目录时,这种元数据丢失无法避免。要保留元数据,应通过 Nextcloud 重命名,或对 SMB 使用方案 A 的更新通知,通过变化事件流处理重命名。
排查文件名编码问题
使用外部存储时,含特殊字符的文件有时不显示,或显示却无法访问。
遇到此情况,运行文件扫描器,例如:
sudo -E -u www-data php occ files:scan --all
若扫描器报告文件编码问题,在挂载选项启用 Mac 编码兼容性,然后重扫外部存储。
**注意**
此模式有性能代价,因为 Nextcloud 检测文件时总要尝试两种编码。
Mac 文件名使用 NFD Unicode 规范化,与其他操作系统常用的 NFC 不同。Mac 用户可能直接上传 NFD 文件名;通过 Nextcloud 上传时,为保持一致性,始终规范化为 NFC。
建议让 Nextcloud 独占使用外部存储,避免此类问题。
亦可参阅原文所链接的 NFC 与 NFD 规范化技术说明。
—
原文:External Storage,Nextcloud 文档贡献者。本文为 Nextcloud 35 文档的中文翻译。原文与截图采用 CC BY 3.0,仓库许可。











暂无评论内容