强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

Nextcloud 私有云部署教程 / 08 - 客户端

08 - 客户端

掌握 Nextcloud 桌面客户端、移动端 App、WebDAV 协议以及同步冲突处理机制。


8.1 客户端概览

客户端平台下载地址核心功能
桌面客户端Windows / macOS / Linuxnextcloud.com/install文件同步、选择性同步、虚拟文件
Android AppAndroidGoogle Play / F-Droid文件浏览、自动备份照片、Talk
iOS AppiOSApp Store文件浏览、自动备份照片、Talk
Web 浏览器任意完整功能访问
WebDAV任意 WebDAV 客户端文件读写

8.2 桌面客户端

安装

# Ubuntu / Debian
sudo add-apt-repository ppa:nextcloud-devs/client -y
sudo apt update
sudo apt install -y nextcloud-client

# Fedora
sudo dnf install -y nextcloud-client

# Arch Linux
sudo pacman -S nextcloud-client

# macOS (Homebrew)
brew install --cask nextcloud

初始配置

┌──────────────────────────────────────────────────┐
│              Nextcloud 桌面客户端                  │
│                                                  │
│  服务器地址: https://cloud.example.com            │
│                                                  │
│  [ 登录 ]                                        │
│                                                  │
│  或者使用应用密码登录                               │
└──────────────────────────────────────────────────┘
  1. 输入服务器地址
  2. 浏览器跳转到 Nextcloud 登录页面
  3. 授权客户端访问
  4. 设置本地同步文件夹

同步配置选项

选项说明
本地同步文件夹选择本地同步目录(默认 ~/Nextcloud
远程文件夹选择要同步的远程目录
选择性同步选择同步特定文件夹
虚拟文件 (VFS)仅显示文件列表,按需下载
自动启动开机自动启动客户端
同步间隔检查变更的间隔时间

虚拟文件 (Virtual Files)

虚拟文件功能只在本地显示文件占位符,实际文件在打开时才下载。

~/Nextcloud/
├── Documents/                    ← 实际同步
│   ├── report.pdf               ← 实体文件
│   └── notes.md                 ← 实体文件
├── Photos/                      ← 虚拟文件
│   ├── vacation.jpg.nextcloud   ← 占位符(几 KB)
│   └── sunset.jpg.nextcloud     ← 占位符
└── Videos/                      ← 未同步
    └── (不在本地显示)

启用虚拟文件:

  1. 客户端设置 → 常规
  2. 勾选 “启用虚拟文件支持”
  3. 重启客户端

注意: Linux 上虚拟文件支持需要 FUSE,Windows 上需要 WinFSP。

命令行客户端

# 安装命令行客户端
sudo apt install -y nextcloud-desktop-cmd

# 添加账户
nextcloudcmd --path / \
  /home/user/Nextcloud \
  https://cloud.example.com \
  admin password

# 仅同步特定目录
nextcloudcmd --path /Documents \
  /home/user/Nextcloud/Documents \
  https://cloud.example.com \
  admin password

8.3 移动端 App

Android App

安装方式:

Google Play Store: 搜索 "Nextcloud"
F-Droid: https://f-droid.org/packages/com.nextcloud.client/
APK 直接下载: https://github.com/nextcloud/android/releases

核心功能:

功能说明
文件浏览浏览、上传、下载、分享文件
自动上传自动备份照片/视频
离线访问标记文件为离线可用
Talk视频会议/聊天
日历/联系人集成 DAVx5 同步
密码管理集成 Nextcloud Passwords
文档扫描拍照扫描文档

自动上传配置:

设置 → 自动上传

照片上传:
├── 源目录: DCIM/Camera
├── 远程目录: /Photos/Phone
├── 仅 WiFi: ✅
├── 充电时上传: ❌(可选)
└── 上传后删除: ❌

iOS App

App Store 搜索 “Nextcloud”,功能与 Android 类似。

核心功能:
├── 文件管理
├── 照片自动备份(后台上传需要开启后台刷新)
├── Face ID / Touch ID 解锁
├── Files App 集成
└── Shortcuts 快捷指令支持

8.4 WebDAV 访问

WebDAV 端点

WebDAV URL: https://cloud.example.com/remote.php/dav/files/username/

常用 WebDAV 客户端配置

Linux (davfs2)

# 安装
sudo apt install -y davfs2

# 创建挂载点
sudo mkdir -p /mnt/nextcloud

# 挂载
sudo mount -t davfs https://cloud.example.com/remote.php/dav/files/admin/ /mnt/nextcloud

# 持久化挂载(/etc/fstab)
echo "https://cloud.example.com/remote.php/dav/files/admin/ /mnt/nextcloud davfs user,noauto 0 0" | sudo tee -a /etc/fstab

# 配置凭据(~/.davfs2/secrets)
echo "/mnt/nextcloud admin your-password" >> ~/.davfs2/secrets
chmod 600 ~/.davfs2/secrets

macOS (Finder)

Finder → 前往 → 连接服务器
服务器地址: https://cloud.example.com/remote.php/dav/files/admin/
用户名: admin
密码: your-password

Windows (网络驱动器)

此电脑 → 映射网络驱动器
文件夹: https://cloud.example.com/remote.php/dav/files/admin/
勾选 "使用其他凭据连接"

rclone

# 安装 rclone
curl https://rclone.org/install.sh | sudo bash

# 配置
rclone config
# 选择 WebDAV,输入服务器地址和凭据

# 使用
rclone ls nextcloud:
rclone copy /local/file.txt nextcloud:Documents/
rclone sync /local/backup/ nextcloud:Backup/

curl 操作示例

# 列出文件
curl -s -u admin:password \
  -X PROPFIND \
  "https://cloud.example.com/remote.php/dav/files/admin/" \
  -H "Depth: 1" | xmllint --format -

# 上传文件
curl -s -u admin:password \
  -X PUT \
  "https://cloud.example.com/remote.php/dav/files/admin/test.txt" \
  --data-binary @local-file.txt

# 下载文件
curl -s -u admin:password \
  -X GET \
  "https://cloud.example.com/remote.php/dav/files/admin/test.txt" \
  -o downloaded-file.txt

# 创建目录
curl -s -u admin:password \
  -X MKCOL \
  "https://cloud.example.com/remote.php/dav/files/admin/NewFolder/"

# 删除文件
curl -s -u admin:password \
  -X DELETE \
  "https://cloud.example.com/remote.php/dav/files/admin/test.txt"

8.5 同步机制

同步流程

┌──────────┐         ┌──────────────┐         ┌──────────┐
│  本地文件  │ ──────→ │  同步客户端  │ ──────→ │  服务端   │
│  变更    │ ←────── │  (变更检测)  │ ←────── │  文件    │
└──────────┘         └──────────────┘         └──────────┘

同步步骤:
1. 客户端扫描本地文件变更
2. 通过 ETag 检测服务端变更
3. 对比本地与远程差异
4. 解决冲突(如有)
5. 执行同步操作

ETag 机制

ETag 是文件的唯一标识符(类似 MD5),用于检测文件是否变更:

初始状态:
  本地 ETag: abc123
  远程 ETag: abc123  → 一致,无需同步

文件被修改:
  本地 ETag: def456 (变更)
  远程 ETag: abc123  → 本地较新,上传

多人修改:
  本地 ETag: def456 (用户 A 修改)
  远程 ETag: ghi789 (用户 B 修改)  → 冲突!

选择性同步

客户端设置 → 同步协议 → 选择要同步的文件夹:

☑ /Documents           ← 同步
☑ /Photos              ← 同步
☐ /Videos              ← 不同步(太大)
☑ /Work                ← 同步
☐ /Archive             ← 不同步

8.6 同步冲突处理

冲突产生场景

场景 1: 离线编辑冲突
├── 用户 A 离线编辑 report.docx
├── 用户 B 在线编辑同一文件
└── 用户 A 上线后产生冲突

场景 2: 多设备冲突
├── 电脑端编辑文件
├── 手机端同时编辑
└── 同步时产生冲突

场景 3: 网络中断
├── 上传过程中网络断开
└── 部分写入导致冲突

冲突解决策略

冲突文件命名:
  report.docx              ← 最新版本(按修改时间)
  report (冲突副本 2026-05-10 14:30:00).docx  ← 冲突版本

冲突解决流程:

  1. 自动解决: 如果一方未修改,自动采用修改版本
  2. 手动解决: 双方都有修改时,创建冲突副本
  3. 用户选择: 用户比较两个版本,保留需要的版本

桌面客户端冲突处理

通知区域弹出冲突提示:
┌─────────────────────────────────────────────┐
│ ⚠️ 同步冲突                                │
│                                             │
│ report.docx 存在冲突                        │
│                                             │
│ [ 保留本地版本 ] [ 保留远程版本 ] [ 两者都保留 ] │
└─────────────────────────────────────────────┘

预防冲突的最佳实践

方法说明
使用在线编辑通过 OnlyOffice/Collabora 在线编辑,避免多版本
及时同步保持客户端在线,减少离线编辑时间
文件锁定编辑前锁定文件(Office 集成自动锁定)
分工明确避免多人同时编辑同一文件
版本控制利用 Nextcloud 文件版本功能

8.7 应用密码(App Passwords)

用途

场景说明
第三方客户端不将主密码暴露给第三方应用
自动化脚本命令行同步、备份脚本
WebDAV 客户端rclone、davfs2 等
安全隔离撤销单个应用密码不影响其他应用

创建应用密码

# 通过 Web 界面
# 个人设置 → 安全 → 设备与活动 → 创建新应用密码

# 通过命令行
sudo -u www-data php /var/www/nextcloud/occ user:auth-token:add admin "My Script"

管理应用密码

# 列出用户的所有应用密码
sudo -u www-data php /var/www/nextcloud/occ user:auth-token:list admin

# 删除应用密码
sudo -u www-data php /var/www/nextcloud/occ user:auth-token:delete admin <token_id>

8.8 带宽与性能优化

客户端带宽限制

客户端设置 → 网络:

上传限制:
├── 不限制 (默认)
├── 限制: 10 MB/s
└── 自动调节

下载限制:
├── 不限制 (默认)
├── 限制: 50 MB/s
└── 自动调节

并行同步

客户端设置 → 常规:

并行同步任务数: 3 (默认,可调整为 1-10)

增量同步

Nextcloud 桌面客户端支持增量同步(Chunked Upload):

大文件上传过程:
1. 将文件分块(默认 10MB/块)
2. 逐块上传
3. 上传失败时从断点继续
4. 所有块上传完成后合并

8.9 注意事项

  1. 时钟同步: 客户端与服务器时间差不应超过 5 分钟,否则会导致同步异常
  2. 网络代理: 使用代理时确保 WebDAV 流量也经过代理
  3. 杀毒软件: 某些杀毒软件会干扰同步进程,添加排除规则
  4. 大文件: 单文件大小受 upload_max_filesize 和磁盘空间限制
  5. 符号链接: 默认不跟随符号链接,需要额外配置
  6. 冲突副本: 冲突副本不会自动删除,定期检查并清理

8.10 扩展阅读


上一章: 07 - 文件分享 下一章: 09 - 在线协作 — OnlyOffice / Collabora 集成与实时编辑。