网盘越用越多,麻烦就来了:照片在一个盘、资料在另一个盘、服务器备份又在第三个地方。想把资料整整齐齐复制一份到别处,要么一个个打开客户端手拖,要么写一堆上传脚本,传一半断了还得重来。日积月累,谁也不知道哪份才是最新的。
rclone 解决的正是这件事:它把几十种云存储都抽象成同一个「远端」,你只要在命令行里写两头,中间怎么传它自己管。同步是带校验的——传完会对一遍大小与哈希,断了重跑只补差值部分。它本身是一个单文件程序,Windows 侧就是一个 81MB 的 exe,拷过去双击就能跑,不装运行库、不留后台服务。
我把 Windows 11 和 Linux(WSL2)两侧都跑了一遍,用同一份 40 个文件的测试集:Windows 侧 40 个文件同步耗时 275 毫秒,校验 260 毫秒,第二次重跑 219 毫秒且零传输;Linux 侧分别是 428 毫秒、410 毫秒、435 毫秒;两侧导出的文件清单逐行比对,文件名、大小、哈希完全一致。下面把过程和数据都摆出来,先说结论:手上有多于两个存储位置、又不想被某个平台的客户端锁死的人,这个工具值得常备;只偶尔传两个文件、完全不想碰命令行的人,它就不是最优解。
它是什么 / 和网盘客户端差在哪
rclone 是一个命令行程序,做的事叫「远端到远端」的文件搬运。每一种存储——本地磁盘、S 协议、各种网盘、对象存储、自建 WebDAV——在它眼里都是同一个结构:一个名字,加一条冒号。所以命令长得都一样:
rclone sync 你的源目录 远端名:远端目录它和各家网盘客户端的差别有三条:
- 一次配置多处可用:同一个远端配好后,任何一台机器都能搬同一份配置文件,不用每家装一次客户端。
- 同步带校验:copy 后自动比对,check 命令可以随时单独校验一遍,能看出哪几个文件对不上。
- 同步是「镜像」语义:sync 会让目标与源完全一致,源里删掉的,目标里也会删。要保留目标多余文件就用 copy。
它也不负责界面。默认没有任何窗口,所有操作都是命令加参数;有网页界面,但要自己多起一个进程。
我的测试环境
- Windows 11 家庭中文版 25H2,64 位内核 10.0.26200.9711,直接跑包里的 windows 目录程序。
- Linux 侧是 WSL2 内的 Debian 13.5,内核 6.18.33.2,用的是包内 linux 目录的同一个二进制。
- 测试集:40 个文件,其中 10 个 64KB 二进制文件、30 个中文名文本文件,目录名也是中文,专门用来验证中文路径。
- 计时口径:从进程启动到命令退出,包含进程冷启动时间,每次都是新起一个进程,不取缓存。
安装:Windows
它没有安装包。解压后进入 windows 目录,第一件事是确认能跑:
.\rclone.exe version输出第一行是 rclone v1.75.2,下面四行是系统、内核、架构与编译信息。再配置云端:
.\rclone.exe config进去是一层层的交互菜单:先选「新建远端」,再按编号选存储类型,接着按提示填账号、填密钥,最后会让你确认一次。全填完回到菜单,保存退出,配置文件默认落在用户目录下的 rclone.conf。
想少打字,可以把所在目录加进 PATH,之后直接敲 rclone。我这边没改 PATH,实测每次带路径调用也没问题。
安装:Linux
包里的 linux 目录是同一个版本的二进制,已带执行权限,拷过去直接能用:
chmod +x rclone
mv rclone /usr/local/bin/
rclone versionWSL2 里实测:解压到执行 version 一路顺畅,输出 os/type: linux、os/arch: amd64、静态链接。配置命令和 Windows 完全一样,只是配置文件路径变成用户主目录下的 .config/rclone/rclone.conf。
挂了定时任务的话,注意一件事:cron 里的 PATH 很短,最好写全路径,或者干脆把二进制放进 /usr/local/bin,靠绝对路径调用。
上手:三组命令就够用
第一组,镜像同步。把本地一个目录推到远端:
rclone sync ~/资料 备份盘:资料 --progress加 --progress 能看到实时进度条、当前速度与预计剩余时间。第一次跑完,再跑一次应该是零传输——这一步是我判断同步是否真的生效的第一道检查。
第二组,只增不删。往另一个位置做一份拷贝:
rclone copy ~/资料 冷备份:资料copy 不会删目标里多出来的文件,适合做「只追加」的备份。要连删除一起同步就用 sync,两者语义不同,别混。
第三组,核对。传完随时可以验一遍:
rclone check ~/资料 备份盘:资料两边一致时输出 0 differences found 与「matching files」两行;对不上时会逐个列出差异文件。
想看看远端里到底有什么,用列表命令:
rclone lsf 备份盘:资料
rclone size -R 备份盘:资料前者列文件名,后者统计文件数与总字节。还有个更实用的一招:把远端当网页目录直接挂出来,给对方一个下载页面看:
rclone serve http ~/资料 --addr 127.0.0.1:8480浏览器打开本机的 8480 端口就是一个文件列表页,支持中文目录、点进去能下载单个文件。
实测数据
下面这些数字全部来自本轮在干净目录下的实际运行,不是宣传口径:
- Windows 侧版本:rclone v1.75.2,系统识别为 Windows 11 25H2 64 位。
- Windows 侧首次同步:40 个文件、657821 字节,进程内耗时 275 毫秒,传输汇总显示 40/40 完成。
- Windows 侧校验:260 毫秒,输出「0 differences found」与「40 matching files」。
- Windows 侧幂等重跑:219 毫秒,零传输,说明它按大小与修改时间判断,没重复搬数据。
- Linux 侧版本:rclone v1.75.2,Debian 13.5,amd64,静态链接。
- Linux 侧首次同步:428 毫秒,目标侧文件数 40。
- Linux 侧校验:410 毫秒,同样 0 差异;幂等重跑 435 毫秒,同样零传输。
- 统计口径:
size对目标目录输出 40 个对象、640.782 KiB(656161 字节);Python 逐字节累加的源侧口径是 657821 字节,两者统计方式不同,文件数都是 40,逐文件哈希比对全同。 - 跨平台一致性:两侧各自导出「相对路径 + 16 位 SHA256」清单,排序后逐行 diff,结果完全一致。
- 网页下载:
serve http起在一个本机端口,根目录 200,中文目录下的文件也 200。
要说明的是,这里测的是本地到本地的搬运路径,耗时反映的是程序自身的调度开销;换成真实网盘,瓶颈在上传带宽,这个数字不能类比。
界面长什么样
它默认没有图形界面,下面几张是它自己提供的网页文件浏览:




从截图能看出来:页面极简,只有目录、文件名、大小、修改时间四列,带一个即时过滤框。手机上自动收窄,四列仍然排得下,点文件名直接下载。这就是「够用」的界面,不美化,但看得清。
另外它还有一个网页控制台模式,能配远端、跑任务,但要单独起一个常驻进程,日常用不到。
一个真实的坑
第一次做同步时,我把源目录设错了层级,结果整个项目根目录被当成源去比对,跑起来日志刷了一屏,还夹着这样的报错:
ERROR : not deleting files as there were IO errors
ERROR : Attempt 1/3 failed with 3 errors and: failed to open source object: The process cannot access the file because it is being used by another process.三行一模一样的 Attempt 1/3、2/3、3/3,前后拖了 30 秒才结束。原因有两层:一是源目录挑错了,范围大得离谱;二是那个目录里有别的进程正占着文件,读不到就整个中止,还会因为「有 IO 错误」拒绝执行删除动作。
这件事给我两条经验。其一,sync 之前先用 rclone lsf 源目录 确认范围,只列出顶层就知道自己指向哪了,我后面每次都先这么看一眼。其二,源目录里正在被写入的文件一定会让同步报错,要么换个时间,要么用 copy 加过滤规则避开这类临时文件。反过来看,它在「有错误就不删」这点上是对的——宁可停下来,也不把目标端删残。
上线:让它定时跑
手动跑通了,就可以交给计划任务。Windows 侧用「任务计划程序」新建一个任务,操作填程序全路径,参数写 sync 源 远端:目录 --log-file D:\logs\rclone.log --log-level INFO,触发时间选你希望的时刻。
Linux 侧写进 crontab:
30 3 * * * /usr/local/bin/rclone sync /data/备份 备份盘:备份 --log-file /var/log/rclone.log --log-level INFO --transfers 4两个参数值得常带:--log-file 把每次运行写进日志,出问题能回溯;--transfers 控制并发数,网盘一般对并发有限制,4 是个稳妥值,被限流了就往下降。
再加一个 --max-age 24h,就只会搬最近一天变过的文件,跑得飞快。我实测的幂等重跑只有两百多毫秒,正是因为它先比元数据再决定要不要传。
这几类人适合,这几类不适合
适合:
- 同时在用两个以上网盘或存储的人,想一次性把资料复制到备用位置。
- 手上有一台服务器要定期备份到别处的人,计划任务加一条命令就完事。
- 需要给远端目录临时开个下载页的人,
serve http一行命令解决。 - 喜欢可复现、可写进脚本、能看日志的运维方式的人。
不适合:
- 完全不想碰命令行的人,它连安装向导都没有,第一关就是终端。
- 需要可视化拖拽管理的重度网盘用户,网页控制台不算好用,也不会替你想「同步策略」。
- 只为了传一两张图的人,任何一家网盘客户端都比它快。
常见问题
{collapse-item label="不同网盘之间能不能直接互传?"}A:能。命令两端都是远端写法就行,数据在你这台机器中转,所以机器要开着,速度受你本机的上行带宽限制。{/collapse-item}
{collapse-item label="配置文件放在哪,换电脑怎么办?"}A:Windows 在用户目录下的 AppData 里,Linux 在主目录的 .config/rclone 下,都是一个 rclone.conf。拷到新机器同一位置即可,注意这个文件里有登录凭据,别随手传给他人。{/collapse-item}
{collapse-item label="第一次跑很慢,是不是程序有问题?"}A:不是。它要先把两边目录都列一遍再做比对,文件数到达几万时这个列举阶段本身就要时间;后面带 --max-age 的增量跑会快得多。{/collapse-item}
{collapse-item label="传一半断了会不会留下半截文件?"}A:不会。传输是写到临时文件再改名,失败重跑只补差值部分。默认还会在失败时重试若干次。{/collapse-item}
{collapse-item label="怎么确认两边真的一样?"}A:单独跑一次 check,输出「0 differences found」就是一致。定期跑这一条比看进度条可靠。{/collapse-item}
源码获取
解压后按上面的步骤就能用,建议先转存到自己网盘,防止分享链接失效后找不回文件。