cr4sync
cr4sync 是一个独立的命令行二进制 + 可选的多用户 HTTP API 服务,围绕 Cloudreve v4 实例提供两类核心能力:
- 本地 ↔ Cloudreve 同步——一次性同步 / 增量持续监听 / 双向同步,统一走
sync-core的SyncEngine。 - 第三方网盘 → Cloudreve 单向迁移——目前支持百度网盘,真流式管线 + 断点续传 + 端到端一致性校验。
启用 server cargo feature 还可以以 HTTP API 形式把上述迁移能力暴露给多个 Cloudreve 用户,附带管理员审计能力。
两种使用形态
| 形态 | 适用场景 | 凭证落盘位置 | 数据库 |
|---|---|---|---|
| CLI | 站长本机单人使用 | ./credential/token.json + ./credential/sources/baidu.json | ./credential/migrate.db |
| Server | 主程序插件,向多用户暴露 HTTP API | server.db 内 source_credential 表(行级隔离) | ./credential/server.db |
两种形态完全隔离:CLI 模式绝不读 server.db,server 模式绝不读 token.json(P0 不变量,有静态扫描守护测试)。
文档结构
- 配置:
cr4sync.toml完整示例 + 字段参考 + 凭证目录约定。 - CLI:所有子命令的参数、行为、配置依赖。
- Server:HTTP API 端点、鉴权、envelope、SSE wire format、admin 端点、server.db schema。
设计原则
- 配置一份:CLI 与 server 共用
[serve.cr4]段描述 Cloudreve 后端,差异仅在[serve](监听地址端口)。 - token 隔离(P0):server 路径上传 Cloudreve 必须使用调用方现场注入的 JWT,绝不读取站长
token.json。 - 行级隔离:server.db 所有 Repo 方法签名首参数必带
user_id,admin 跨用户操作走专门的*_admin方法。 - 审计可查:server 所有写操作(POST/PUT/DELETE)落
audit_log表,含 actor / action / target / payload(脱敏)。
文档约定
- 文档中所有 JSON 示例都是 envelope 已脱壳后的形态,即响应 body 是
{ "code": 0, "msg": "ok", "data": <例所示>, "request_id": "..." }。 - 时间戳一律为 Unix 秒 (i64),本机时区由客户端自行换算。
user_id类型恒为字符串(Cloudrevesub字段直透)。