暗色模式

rclone 云盘同步:从本地备份到 WebDAV 与定时同步

技术教程
2026-09-02
9
0
本文要点
  • rclone 用一个统一命令操作几十种存储(本地目录、WebDAV、S3、OSS、各种网盘),配置写在 rclone.conf
  • 实测在 Ubuntu 24.04 上把本地目录当"源",用 rclone serve webdav 起一个 WebDAV 服务当"远程盘",再以 rclone config create 一行配置远程
  • rclone copy 增量复制后 rclone ls 列出 3 个文件(readme.txt 31B、docs/hostname 5B、docs/os-release 400B),用 rclone check 校验两端一致性
  • 定时备份用 crontab 一行搞定:0 2 * * * rclone sync ...,增量同步、断点续传,适合小规模服务器与 NAS 备份
  • copy 只单向新增、sync 双向对齐(会删多余文件)、--dry-run 先演习;敏感数据可叠加 crypt 远程加密

rclone 是什么:统一接口操作几十种存储

服务器做备份、NAS 挂网盘、迁移数据,最头疼的是每换一种存储就要学一套新工具:本地文件用 cp、FTP 用 lftp、S3 用 aws cli、各种网盘各有各的客户端。rclone 用"远程(remote)"抽象统一了这一切——本地目录、WebDAV、FTP、S3、阿里云 OSS、Google Drive、OneDrive 等都通过同一个命令读写,剩下只有复制、同步、校验、挂载这几个语义。

rclone 的核心概念是远程:给某种存储协议起个名字,记在配置文件 ~/.config/rclone/rclone.conf 里。命令里用 远程名:路径 引用它,比如 webdav-demo:/ 表示 webdav-demo 这个远程的根目录。后面所有操作都在"本地路径"与"远程:路径"之间进行。

安装与验证:apt 一行搞定

rclone 是 Go 写的单二进制,各发行版仓库基本都收录。Ubuntu/Debian 直接 apt 安装:

apt-get install -y rclone

验证版本:

rclone version | head -3

rclone 安装与版本确认

实测机(Ubuntu 24.04)装到的是 v1.60.1,os/versionos/kernel 同时确认二进制与系统匹配。也可以从 rclone 官网安装页 下载官方脚本装最新版。

准备测试数据

文章后面所有演示都在 /tmp/rclone-demo 下进行,不污染 home 目录。先建一个模拟"要备份的目录",放一个文本文件和一个小目录:

mkdir -p /tmp/rclone-demo/source/docs
printf 'blog astarry backup\n2026-09-02\n' > /tmp/rclone-demo/source/readme.txt
cp /etc/hostname /etc/os-release /tmp/rclone-demo/source/docs/
find /tmp/rclone-demo/source -type f

这样 /tmp/rclone-demo/source 下就有 readme.txt(我们自己写的)和 docs/ 下的两个系统文件,共 3 个文件,后面复制、校验都以它们为准。

起一个 WebDAV 服务当"远程盘"

要演示"把数据传到远程",得先有个远程。最省事的方式是用 rclone 自己当服务端——serve webdav 能把一个目录以 WebDAV 协议暴露出来,这正是很多 NAS(群晖、威联通)对外提供网盘的方式。把测试目录暴露在本地 18080 端口:

systemd-run --unit=rclone-webdav --collect \
  rclone serve webdav /tmp/rclone-demo/dest --addr 127.0.0.1:18080

systemd-run 把服务挂到 systemd 下独立跑(关掉 SSH 会话也不会断),目录是 /tmp/rclone-demo/dest——它就是我们的"远程盘"。curl -I 探一下端口确认已就绪:

curl -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1:18080/

返回 200 说明服务正常。生产上 WebDAV 建议加 --user/--pass 开认证,本地演示先省略。

创建远程:config create 一行配置

让 rclone 认识这个 WebDAV 服务,用 config create 一行创建远程,不需要进交互式向导:

rclone config create webdav-demo webdav url=http://127.0.0.1:18080 vendor=other

rclone 创建 WebDAV 远程

创建成功后命令会把结果回显出来:远程名 webdav-demo,类型 webdav,地址指向本地 18080。它等价于交互式 rclone config 一路确认,但写进脚本或复用到别的机器上更省事。其他类型的远程同理,比如 S3 是 rclone config create mys3 s3 provider=AWS env_auth=true,参数名随协议不同。

复制文件:copy 与 ls 验证

远程就绪后,把本地源目录的内容复制上去。copy 是"单向增量":只把本地有而远程没有(或更新的)文件传上去,不会动远程已有的其他文件:

rclone copy /tmp/rclone-demo/source webdav-demo:/; rclone ls webdav-demo:/

rclone 复制文件到远程并列出

copy 静默成功(无输出即无错误),紧跟着的 ls 列出远程根目录内容:readme.txt 31 字节、docs/hostname 5 字节、docs/os-release 400 字节,和本地源目录一一对应。大小字段来自远程真实元数据,等于做了第一层"传上去了"的验证。

双向对比校验:check

文件传上去不代表两端完全一致,还要逐文件校验。check 对比两边所有文件的文件名、大小和内容哈希(WebDAV 通常只支持按大小/修改时间比对):

rclone check /tmp/rclone-demo/source webdav-demo:/ --verbose

输出结尾会给出汇总,形如:

NOTICE: webdav root '': 3 matching files
NOTICE: webdav root '': 0 differences found
Checks: 3 / 3, 100%

3 个文件全部匹配、0 差异。check 是"备份完确认真的对了"的必备步骤,建议每次同步后执行一遍。

定时同步:crontab

一次性复制交给手动,定期备份交给 cron。rclone 的 sync 是"双向对齐":让远程与本地完全一致,本地没有的文件在远程也会被删掉。先加一行定时任务,每天凌晨 2 点把 /home/user/data 同步到远程的 data 目录:

(crontab -l 2>/dev/null; echo "0 2 * * * rclone sync /home/user/data webdav-demo:data >> /var/log/rclone-backup.log 2>&1") | crontab -
crontab -l

第一条命令把新任务追加到现有 crontab(>> /var/log/rclone-backup.log 记录输出便于排错),第二条确认结果。如果是"只备份、不删远程多余文件"的场景,把 sync 换回 copy 更安全。大规模批量迁移前,强烈建议先跑一遍 rclone sync ... --dry-run 演习,--dry-run 只打印"会做什么"不真正执行,确认无误再去掉重跑。

结语

rclone 把"备份到各种存储"收敛成三个命令:copy 单向增量、sync 双向对齐、check 校验一致性,配上 config create 的远程配置与 crontab 定时,就是一套完整的服务器备份方案。对敏感数据,还可以在本地真实目录之上叠加一层 crypt 远程做端到端加密,再同步到云端;WebDAV 只是众多协议之一,S3/OSS/网盘的配置方法在 rclone 官方文档 里都能找到对应参数。

发表评论

暂无评论,快来抢沙发吧!