rclone 配置 Drime 云存储后端:从令牌创建到分片上传的完整指南
Drime(drime.cloud)是一家专注于高速、可靠文件投递的云存储与传输服务,同时提供免费与付费套餐,其上传速度和链接分享能力是其核心卖点。在 rclone 中,Drime 后端(backend 名为 drime)自 v1.73 版本引入,可让你像操作本地目录一样对 Drime 空间执行 copy、lsf、sync、mount 等全部 rclone 操作。读完本文,你将掌握如何申请 API 令牌、通过 rclone config 完成交互式配置、理解"无修改时间/哈希"带来的同步语义,以及如何利用 root_folder_id 收窄作用范围、按需调整分片上传参数以实现大文件高速传输。
Drime 后端在 rclone 中的定位
Drime 是 rclone 众多云存储远端之一,对应源码位于 backend/drime/drime.go。与 Google Drive、Dropbox 这类完整网盘类似,Drime 也以"目录树 + 文件条目(file entry)"的方式组织数据,因此其实现大量复用了 rclone 的目录缓存(dircache)机制。
从源码可见该后端基于 HTTP REST API 构建:接口基地址为 https://app.drime.cloud/api/v1(见 drime.go 第 53-54 行),并以 Bearer 令牌方式完成鉴权。文件头部注释还透露了官方接口的限流约定——响应头 X-Ratelimit-Limit 与 X-Ratelimit-Remaining 表明限制为每分钟 2000 次 API 请求,rclone 内置的 pacer 会负责在限流之下平稳运行。
第一步:在 Drime 控制台创建 API Access Token
任何后端配置之前,你都需要一个访问凭证。流程如下:
- 登录 Drime 网页控制台;
- 进入 Settings(设置)→ Developer(开发者) 页面;
- 创建一个 token 作为 API Access Key;
- 为它起一个易于识别的名称,例如
rclone-sync; - 复制生成的 token,供后续
rclone config使用。
access_token 在 drime.go 第 67-71 行 注册时被标记为 Sensitive: true,意味着 rclone 会将其作为敏感项处理(写入配置文件时以 obscured 形式存储)。
通过 rclone config 完成交互式配置
先启动配置向导:
rclone config
随后按下面的示例完成交互。这里的远端命名为 remote,你可以自由更换名称:
No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
Enter name for new remote.
name> remote
Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.
XX / Drime
\ (drime)
Storage> drime
Option access_token.
API Access token
You can get this from the web control panel.
Enter a value. Press Enter to leave empty.
access_token> YOUR_API_ACCESS_TOKEN
Edit advanced config?
y) Yes
n) No (default)
y/n> n
Configuration complete.
Options:
- type: drime
- access_token: YOUR_API_ACCESS_TOKEN
Keep this "remote" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y
在"Edit advanced config?"处选择 y 还可以额外看到下文"Advanced options"中的全部进阶参数。配置完成后,rclone 会自动在配置文件中记录该远端,常用形如:
[remote]
type = drime
access_token = YOUR_API_ACCESS_TOKEN
从源码看,当 root_folder_id 留空时,rclone 在建立连接(NewFs)时会通过目录缓存自动探测正确的根目录 ID,并回填到配置文件中(见 drime.go 第 386-390 行)。
基础使用:查看与复制文件
配置完成后即可像使用其他远端一样使用它(以下命令中 remote 替换为你实际命名的远端):
列出 Drime 顶层目录与文件:
rclone lsf remote:
将本地目录复制到 Drime 上名为 backup 的目录:
rclone copy /home/source remote:backup
rclone copy、rclone sync、rclone move、rclone mount、rclone lsf 等命令均适用于该远端。此外该后端实现了 About(配额查询)接口,可通过 rclone about remote: 查看总容量、已用与可用空间,其数据来自 GET /user/space-usage(见 drime.go 第 1432-1461 行)。
修改时间与哈希:Drime 的同步语义要点
Drime 不支持修改时间(modification time),也不支持任何哈希校验。 这一点需要重点理解,因为它直接影响 sync/copy 的增量判断行为。
源码印证如下:
Precision()返回fs.ModTimeNotSupported(drime.go 第 766-769 行);SetModTime()直接返回fs.ErrorCantSetModTime(drime.go 第 1534-1537 行);Hash()返回hash.ErrUnsupported(drime.go 第 1483-1486 行)。
由此产生两个实际影响:
- 默认情况下,
rclone sync/copy只能以"文件大小"作为判断文件是否需要更新的依据。只要远端文件与本地文件大小一致,rclone 就会认为它是最新的,即使内容实际已经变化。 - 你还可以使用
--update标志,此时 rclone 改用"对象上传时间"(即 Drime 记录该文件被上传的时刻)参与判断。对很多操作场景而言这足以判断文件是否变动。但要注意一个陷阱:如果一个文件的本地时间戳早于其真实上传时间(例如把创建时间设在过去的旧文件同步上去),使用--update的同步会漏掉它。因此官方文档建议仅在能接受这一语义的前提下使用--update。
从对象实现看,rclone 会把 Drime 返回的 UpdatedAt(更新时间)作为对象时间使用(见 drime.go 第 1494-1501 行),这也解释了为何"上传时间"是唯一可靠的时间维度。
受限文件名字符与编码处理
除了 rclone overview 文档中定义的通用受限字符集 之外,Drime 后端还会额外替换以下字符:
| 字符 | 值 | 替换为 |
|---|---|---|
| \(反斜杠) | 0x5C | \(全角反斜杠) |
此外,文件名不能以某些字符开头或结尾,这些字符仅在处于名称的首位或末位时被替换:
| 字符 | 值 | 替换为 |
|---|---|---|
| 空格 | 0x20 | ␠(U+2420,符号空格) |
另外,无效的 UTF-8 字节也会被替换(与 overview 中的 Invalid UTF-8 处理 一致),因为它们无法出现在 JSON 字符串中。
这些规则对应后端注册的默认 encoding 值 Slash,BackSlash,Del,Ctl,LeftSpace,RightSpace,InvalidUtf8,Dot(drime.go 第 153-157 行)。也就是说,除了通用的斜杠、控制字符、删除符、首尾空格、非法 UTF-8、点号等规则外,Drime 后端额外启用了 BackSlash 编码——这正是上表中反斜杠被替换为全角形式的原因。编码是双向的:rclone 在列出远端条目时会把编码后的名称解码回标准形式(见 drime.go 第 559 行 的 ToStandardName),保证你看到和操作的都是原始名称。
提示:encoding 本身也是一个可配置项(
--drime-encoding),仅在确有必要时才建议改动,否则可能导致与服务器端实际名称不一致。
root_folder_id:把 rclone 限制到某个目录
root_folder_id 表示 rclone 视为"Drime 驱动器根目录"的那个目录(以它的 Folder ID 标识)。
- 通常留空即可:rclone 会自动确定正确的根目录,并把值回填进配置文件;
- 但如果你希望 rclone 只对某个子目录层级可见,可以手动设置,将其锁定到特定目录树。
要找到目标目录的 Folder ID,可以借助 rclone 自身。先列出顶层目录及其 ID:
$ rclone lsf -Fip --dirs-only remote:
d6341f53-ee65-4f29-9f59-d11e8070b2a0;Files/
f4f5c9b8-6ece-478b-b03e-4538edfe5a1c;Photos/
d50e356c-29ca-4b27-a3a7-494d91026e04;Videos/
其中 -Fip 的含义是让输出格式包含 ID(i)与路径(p),并以 ; 作为分隔符,因此每行中分号之前的部分就是该目录的 ID。例如要把 rclone 锁定到 Files 目录,配置:
root_folder_id = d6341f53-ee65-4f29-9f59-d11e8070b2a0
其底层机制是:目录 ID 会进入 rclone 的目录缓存(dircache),后续所有 FindLeaf、List、Mkdir、Put 等操作都以该 ID 为起点解析路径(见 drime.go 第 458-504 行)。注意 root_folder_id 在源码注册时同样被标记为 Sensitive: true。
配置参数全览
以下是 drime 后端的标准与进阶选项(文档说明与 drime.go 第 61-160 行 的注册定义保持一致)。命令行下每个参数均可用 --drime-xxx 形式覆盖,也可通过环境变量设置。
Standard options(标准选项)
--drime-access-token
API Access token(从网页控制台获取)。
- Config:
access_token - Env Var:
RCLONE_DRIME_ACCESS_TOKEN - Type:string
- Required:false
Advanced options(进阶选项)
--drime-root-folder-id
根文件夹的 ID。正常情况留空,由 rclone 自动填写;如需把 rclone 限制在某个目录,手动填入即可(见上文)。
- Config:
root_folder_id - Env Var:
RCLONE_DRIME_ROOT_FOLDER_ID - Type:string
- Required:false
--drime-workspace-id
Account ID。正常留空,仅在需要指定某个 Workspace 时填写。设置后,rclone 的所有列表与创建目录/上传请求都会附带 workspaceId 查询参数(见 drime.go 第 480-482 行、drime.go 第 532-534 行)。
- Config:
workspace_id - Env Var:
RCLONE_DRIME_WORKSPACE_ID - Type:string
- Required:false
--drime-list-chunk
每次调用返回的条目数量。后端在列目录时以 perPage 参数携带该值,并按 page 参数分页拉取直到最后一页(见 drime.go 第 535-568 行)。
- Config:
list_chunk - Env Var:
RCLONE_DRIME_LIST_CHUNK - Type:int
- Default:1000
--drime-hard-delete
是否永久删除文件而不是放入回收站。源码中删除请求的 DeleteForever 字段直接取自该选项(drime.go 第 699-702 行),因此关闭时(默认)删除只是移入回收站、可恢复,开启后不可恢复。
- Config:
hard_delete - Env Var:
RCLONE_DRIME_HARD_DELETE - Type:bool
- Default:false
--drime-upload-cutoff
切换到分片上传的临界大小。任何大于该值的文件都会被切成 chunk_size 的分块上传。最小值 0,最大 5 GiB。默认值 5 MiB 与 Drime 官方上传指南 一致(见 drime.go 第 57 行)。
- Config:
upload_cutoff - Env Var:
RCLONE_DRIME_UPLOAD_CUTOFF - Type:SizeSuffix
- Default:5Mi
--drime-chunk-size
上传使用的分块大小。当文件大小超过 upload_cutoff、或文件大小未知(例如通过 rclone rcat 流式写入、rclone mount 写入、Google Photos / Google Docs 等场景)时,将以该值进行 multipart(分片)上传。
要点提示:
-
内存占用:每个传输在内存中会缓冲
--drime-upload-concurrency个该大小的分块; -
若在高速链路上传输大文件且内存充足,增大该值可提升传输速度;
-
上传已知大小的大文件时,rclone 会自动调大分块,以保证不突破 10,000 分块上限;
-
未知大小的文件则始终使用你配置的
chunk_size。由于默认分块为 5 MiB、最多 10,000 个分块,默认情况下单文件流式上传的上限约为 48 GiB;若要流式上传更大的文件,需要调大chunk_size。 -
Config:
chunk_size -
Env Var:
RCLONE_DRIME_CHUNK_SIZE -
Type:SizeSuffix
-
Default:5Mi
--drime-upload-concurrency
分片上传与复制操作中,同一文件并发上传的分块数量。若你只上传少量大文件、且现有带宽未被充分利用,增大该值可能有助于提速。从源码常量看,maxUploadParts 为 10000(drime.go 第 55 行),与上述分块上限相印证。
- Config:
upload_concurrency - Env Var:
RCLONE_DRIME_UPLOAD_CONCURRENCY - Type:int
- Default:4
--drime-encoding
后端使用的编码规则,详见 overview 文档的 encoding 章节。
- Config:
encoding - Env Var:
RCLONE_DRIME_ENCODING - Type:Encoding
- Default:
Slash,BackSlash,Del,Ctl,LeftSpace,RightSpace,InvalidUtf8,Dot
--drime-description
对该远端的文字描述(不会影响任何传输行为,仅用于自我说明)。
- Config:
description - Env Var:
RCLONE_DRIME_DESCRIPTION - Type:string
- Required:false
源码视角:Drime 后端的实现要点
鉴权与重试策略
连接建立时(NewFs),rclone 会为每个请求设置 Authorization: Bearer <access_token> 与 Accept: application/json 头(见 drime.go 第 381-383 行),并对 JSON 错误响应做统一解析(errorHandler,见 drime.go 第 330-349 行)。
除 rclone 通用重试规则外,该后端额外把以下状态码纳入重试列表(drime.go 第 266-278 行):
429 Too Many Requests、500、502、503、504、509;- Cloudflare 相关错误码
520、521、522、523、524。
结合每分钟 2000 次请求的官方限流,rclone 使用带最小间隔 10ms、最大间隔 20s 的指数退避 pacer 控制请求节奏(drime.go 第 50-52 行),保证实际请求量不会触顶。
覆盖写入的"先传后删"策略
当目标文件已存在时,Object.Update 并不是原地覆盖,而是先上传新版本,成功后删除旧对象(见 drime.go 第 1589-1607 行)。若新版本上传失败,旧文件保留不受影响;若旧对象在删除时已被其他客户端先删掉,rclone 也会安全忽略(仅记录调试日志),这种设计保证了覆盖操作尽量原子化。
小文件直传与大文件分片上传的分流
Object.Update 在 drime.go 第 1609-1620 行 根据大小分流:
- 大小未知(
size < 0)或超过upload_cutoff→ 走multipart.UploadMultipart分片上传流程,对应 Drime API 的/s3/multipart/*系列接口(创建上传、批量签名分块 URL、完成上传等,参见 backend/drime/api/types.go 中MultiPartCreateRequest、MultiPartGetURLsRequest、MultiPartCompleteRequest等结构体); - 否则 → 直接以 multipart 表单方式
POST /uploads单次上传(drime.go 第 1622-1647 行)。
Drime 的 API 类型定义(backend/drime/api/types.go)还展示了其完整的数据模型:Item 同时描述文件夹与文件(以 Type == "folder" 区分),包含 file_size、created_at、updated_at、file_hash、url 下载地址、permissions 等元数据;Listing 则给出了分页响应结构(current_page、last_page、per_page 等),与 list_chunk 参数一一对应。
删除与目录操作语义
- 删除统一走
POST /file-entries/delete,DeleteForever由hard_delete决定(默认进回收站); - 若 Drime 返回包含
entry ids is invalid的 422 错误,rclone 将其归一化为"对象不存在",避免重复删除时报错(drime.go 第 708-713 行); - 目录支持
Rmdir(非空报错)、Purge(连内容一起删)以及DirMove;根目录不允许 purge; - 文件与目录还实现了 server-side 的
Move(POST /file-entries/move)与Copy(POST /file-entries/duplicate),这意味着在 Drime 内部的搬移与复制不会走"下载再上传",效率更高; - 空目录是允许的,同时后端支持读取/写入 MIME 类型(
ReadMimeType/WriteMimeType,见 drime.go 第 376-380 行)。
限制与注意事项
- 文件名长度限制为 255 字节(按 UTF-8 编码计)。注意是按"字节"而非"字符"计算,因此包含中文等多字节字符的文件名实际可容纳的字符数会更少;
- 不支持修改时间与哈希(具体同步语义见上文专节,涉及
--update的历史时间戳漏检风险); - 对 API 有每分钟约 2000 次的官方限流,海量小文件的同步场景可结合 rclone 的
--transfers、--checkers等参数适当控制并发,避免触发 429。
综上,Drime 后端在 rclone 中的定位清晰:它适合看重上传速度、以"整文件替换 + 链接分享"为工作流的使用者;在搭配 rclone sync 做增量备份时,务必先理解其"无 mtime、无哈希"的比对逻辑,必要时引入 --update 并接受其边界情况,或配合 crypt 等后端进行内容校验。
如需查阅更多命令细节,可参考后端实现 backend/drime/drime.go、API 数据类型 backend/drime/api/types.go、对应测试 backend/drime/drime_test.go,以及 rclone 全量后端选项总览 backend/drime 官方文档。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0629
MiniCPM5-2BMiniCPM5-2B 是一款面向端侧、本地部署和资源受限场景的 2B 稠密 Transformer,能够达到同尺寸开源模型 SOTA 水平。Markdown00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
HivisionIDPhotos⚡️HivisionIDPhotos: a lightweight and efficient AI ID photos tools. 一个轻量级的AI证件照制作算法。Python07
DragonOSDragonOS is an operating system developed from scratch using Rust, with Linux compatibility. It is designed for **Serverless** scenarios. 使用Rust从0自研内核,具有Linux兼容性的操作系统,面向云计算Serverless场景而设计。Rust00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00