Rclone 数据迁移完全指南 / 第 8 章 - 服务模式
第 8 章 - 服务模式
8.1 服务模式概述
Rclone 的 serve 命令可以将本地或远程存储以各种协议对外提供服务,实现:
- 通过 HTTP 浏览和下载文件
- 通过 WebDAV 让应用程序(如 Office)直接编辑云端文件
- 通过 FTP 管理文件
- 通过 S3 协议提供兼容 S3 的对象存储服务
支持的服务协议
| 协议 | 命令 | 说明 | 典型场景 |
|---|---|---|---|
| HTTP | serve http | HTTP 文件浏览/下载 | 临时文件共享 |
| WebDAV | serve webdav | WebDAV 读写服务 | Office 在线编辑 |
| FTP | serve ftp | FTP 文件传输 | FTP 客户端访问 |
| SFTP | serve sftp | SFTP 安全文件传输 | 安全文件访问 |
| S3 | serve s3 | 兼容 S3 的对象存储 | 自建 S3 服务 |
| Restic | serve restic | Restic 备份服务端 | Restic 备份 |
8.2 serve http — HTTP 文件服务
基本用法
# 共享本地目录
rclone serve http /data/public/ --addr :8080
# 共享远程存储
rclone serve http s3:my-bucket/ --addr :8080
# 后台运行
rclone serve http /data/ --addr :8080 --daemon
浏览器访问 http://localhost:8080 即可浏览和下载文件。
添加认证
# 用户名密码认证
rclone serve http /data/ --addr :8080 \
--user admin \
--pass mypassword
# 使用 htpasswd 文件(多用户)
rclone serve http /data/ --addr :8080 \
--htpasswd /etc/rclone.htpasswd
# 生成 htpasswd 文件
htpasswd -bc /etc/rclone.htpasswd admin mypassword
高级配置
# TLS/HTTPS
rclone serve http /data/ --addr :443 \
--cert /etc/ssl/cert.pem \
--key /etc/ssl/key.pem
# 自定义模板
rclone serve http /data/ --addr :8080 \
--template /path/to/template.html
# 限制访问
rclone serve http /data/ --addr :8080 \
--user readonly \
--pass secret \
--read-only
临时文件共享
#!/bin/bash
# share.sh - 快速共享文件
PORT=${1:-8080}
DIR=${2:-.}
echo "Sharing $DIR on port $PORT..."
echo "Press Ctrl+C to stop"
rclone serve http "$DIR" \
--addr ":$PORT" \
--user share \
--pass "$(openssl rand -base64 12)" \
--read-only
8.3 serve webdav — WebDAV 服务
WebDAV(Web Distributed Authoring and Versioning)允许应用程序直接读写远程文件。
基本用法
# 本地目录
rclone serve webdav /data/documents/ --addr :8080
# 远程存储
rclone serve webdav gdrive:Documents/ --addr :8080 \
--user admin --pass mypassword
Nextcloud 风格 WebDAV
# 模拟 Nextcloud 的 WebDAV 接口
rclone serve webdav s3:my-files/ --addr :8080 \
--user admin --pass mypassword \
--realm "My Cloud Storage"
Windows 挂载 WebDAV
# Windows 中映射网络驱动器
# 1. 打开"此电脑" → "映射网络驱动器"
# 2. 输入: http://server-ip:8080/
# 3. 输入用户名密码
# 或使用命令行
net use Z: http://server-ip:8080/ /user:admin mypassword
macOS 挂载 WebDAV
# 在 Finder 中连接
# 菜单 → 前往 → 连接服务器 → http://server-ip:8080/
# 或命令行
mount_webdav -s -v webdav http://server-ip:8080/ /Volumes/webdav
LibreOffice / OnlyOffice 集成
# 启动 WebDAV 服务后,LibreOffice 可以直接打开云端文件
# 文件 → 打开 → 输入 URL: http://server:8080/document.docx
8.4 serve ftp — FTP 服务
基本用法
# FTP 服务
rclone serve ftp /data/ --addr :2121 \
--user ftpuser --pass ftppass
# 远程存储
rclone serve ftp s3:my-bucket/ --addr :2121 \
--user ftpuser --pass ftppass
TLS 加密 FTP
rclone serve ftp /data/ --addr :2121 \
--user ftpuser --pass ftppass \
--tls-cert /etc/ssl/cert.pem \
--tls-key /etc/ssl/key.pem
FTP 客户端连接
# 使用 lftp
lftp ftp://ftpuser:ftppass@localhost:2121
# 使用 curl
curl ftp://ftpuser:ftppass@localhost:2121/
# 使用 FileZilla
# 主机: ftp://localhost
# 端口: 2121
# 用户名: ftpuser
# 密码: ftppass
8.5 serve sftp — SFTP 服务
基本用法
# SFTP 服务
rclone serve sftp /data/ --addr :2222 \
--user sftpuser --key /etc/rclone_sftp_key
# 生成 SSH 密钥
ssh-keygen -t ed25519 -f /etc/rclone_sftp_key -N ""
多用户配置
# 使用 authorized_keys 文件
rclone serve sftp /data/ --addr :2222 \
--user sftpuser \
--authorized-keys /home/sftpuser/.ssh/authorized_keys
连接测试
# 使用 ssh
sftp -P 2222 sftpuser@localhost
# 使用 scp
scp -P 2222 sftpuser@localhost:/file.txt ./
8.6 serve s3 — 自建 S3 服务
将任意 Rclone 支持的存储以 S3 兼容协议对外提供服务。
基本用法
# 将本地目录以 S3 协议提供服务
rclone serve s3 /data/s3-store/ --addr :8333
# 将 Google Drive 以 S3 协议提供服务
rclone serve s3 gdrive: --addr :8333
配合 MinIO 客户端
# 配置 MinIO 客户端
mc alias set myserver http://localhost:8333 accessKey secretKey
# 列出 Bucket
mc ls myserver/
# 上传文件
mc cp file.txt myserver/mybucket/
# 下载文件
mc cp myserver/mybucket/file.txt ./
配合 Rclone 客户端
# 客户端配置
[local-s3]
type = s3
provider = Other
endpoint = http://localhost:8333
access_key_id = rclone
secret_access_key = rclone
# 使用
rclone ls local-s3:
8.7 serve restic — Restic 备份服务
Restic 是一个高效的加密备份工具,Rclone 可以作为其服务端。
配置
# 启动 Restic 服务
rclone serve restic s3:restic-repo/ --addr :8181
# 使用 Restic 客户端
export RESTIC_REPOSITORY=rest:http://localhost:8181/
export RESTIC_PASSWORD=your-password
restic init
restic backup /data/
restic snapshots
8.8 安全配置
TLS/HTTPS
# 生成自签名证书(测试用)
openssl req -x509 -newkey rsa:4096 -nodes \
-keyout key.pem -out cert.pem -days 365 \
-subj "/CN=localhost"
# 使用 TLS 启动服务
rclone serve http /data/ --addr :443 \
--cert cert.pem --key key.pem
访问控制
# 限制只读访问
rclone serve webdav /data/ --addr :8080 --read-only
# 使用基本认证
rclone serve http /data/ --addr :8080 \
--user admin --pass $(rclone obscure mypassword)
# 绑定特定地址(只允许本地访问)
rclone serve http /data/ --addr 127.0.0.1:8080
使用反向代理
# nginx 反向代理配置
server {
listen 443 ssl;
server_name files.example.com;
ssl_certificate /etc/ssl/cert.pem;
ssl_certificate_key /etc/ssl/key.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 10G;
}
}
8.9 服务管理
使用 systemd 管理服务
sudo tee /etc/systemd/system/rclone-webdav.service << 'EOF'
[Unit]
Description=Rclone WebDAV Service
After=network-online.target
[Service]
Type=simple
ExecStart=/usr/bin/rclone serve webdav /data/documents/ \
--addr 127.0.0.1:8080 \
--user admin \
--pass-secret RCLONE_WEBDAV_PASS \
--log-level INFO
Restart=on-failure
RestartSec=5
Environment=RCLONE_WEBDAV_PASS=your-secure-password
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable rclone-webdav
sudo systemctl start rclone-webdav
注意事项
⚠️ 生产环境:不建议将
serve直接暴露到公网。建议使用 nginx 反向代理 + TLS + 认证。
⚠️ 性能:
serve命令适合中小规模使用。大规模并发访问请使用专用服务(如 MinIO、Nginx)。
⚠️ FTP 安全:FTP 协议不加密,生产环境请使用 SFTP 或 WebDAV over HTTPS。
💡 临时分享:
serve http非常适合临时分享文件,几分钟内即可启动。
💡 跨平台兼容:WebDAV 被大多数操作系统原生支持,是最通用的共享协议。
扩展阅读
上一章:← 第 7 章 - 挂载远程存储 下一章:第 9 章 - 加密存储 →