本文要点
- 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
实测机(Ubuntu 24.04)装到的是 v1.60.1,os/version 与 os/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
创建成功后命令会把结果回显出来:远程名 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:/
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 官方文档 里都能找到对应参数。
评论 (0)
暂无评论,快来抢沙发吧!