源码湾 源码湾

rclone 云存储同步:单文件 82MB,几十种网盘统一成一个通道

源码湾
2小时前发布
资源信息 Windows / Linux 双平台主程序,单文件解压即用。
版本
v1.75.2
授权
MIT
体积
60.63 MB
语言
Go
数据库
无
夸克网盘 无提取码 下载

今日下载 0 累计下载 0 还剩 7 个

网盘越用越多,麻烦就来了:照片在一个盘、资料在另一个盘、服务器备份又在第三个地方。想把资料整整齐齐复制一份到别处,要么一个个打开客户端手拖,要么写一堆上传脚本,传一半断了还得重来。日积月累,谁也不知道哪份才是最新的。

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 version

WSL2 里实测:解压到执行 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 一行命令解决。
  • 喜欢可复现、可写进脚本、能看日志的运维方式的人。

不适合:

  • 完全不想碰命令行的人,它连安装向导都没有,第一关就是终端。
  • 需要可视化拖拽管理的重度网盘用户,网页控制台不算好用,也不会替你想「同步策略」。
  • 只为了传一两张图的人,任何一家网盘客户端都比它快。

常见问题

源码获取

解压后按上面的步骤就能用,建议先转存到自己网盘,防止分享链接失效后找不回文件。

实测说明

本文截图全部来自本站实测环境(源码湾 yuanmawan.com),实测版本 rclone v1.75.2,许可证 MIT。

© 版权声明
THE END
喜欢就支持一下吧
点赞 0 分享 收藏
评论 抢沙发
OωO
取消