Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

cr4sync up / cr4sync dl

独立的单文件 / 单目录上传 / 下载原语。不走 SyncEngine,行为简单可预测,保留单文件字节级进度。

up(alias upload)— 上传

cr4sync up <src> <target> [-r] [-f] [--conflict <MODE>]
cr4sync upload ./photo.jpg cloudreve://my/backup/photo.jpg
cr4sync up -rf ./photos cloudreve://my/backup/photos

dl(alias download)— 下载

cr4sync dl <src> <target> [-r] [-f] [--conflict <MODE>]
cr4sync download cloudreve://my/data.zip ./data.zip
cr4sync dl -rf cloudreve://my/photos ./photos

公共参数

参数类型默认说明
<src>string源路径。up:本地路径;dl:远端 URI。
<target>string目标路径。up:远端 URI;dl:本地路径。
-r, --recursiveflagfalse递归处理目录。
-f, --forceflagfalse覆盖已存在文件。等价于 --conflict overwrite
--conflict <MODE>enumskipskip(跳过)/ overwrite(覆盖)。

-r-f 可堆叠:-rf-r -f

行为细节

up

  • 单文件:直接 POST /file/upload 拿 session → 切片 chunk_size → 顺序上传 → cloudreve callback。
  • 单文件分片上传:失败重传从 chunk 0 开始(进程内重试,进程重启会丢,仅低效非数据损坏)。
  • 目录递归:广度优先扫描,逐个上传单文件流程。
  • 重试次数:[conf].retry(缺省 3)。

dl

  • 单文件:cloudreve download 拿带签名直链 → 单 HTTP GET 流式写入 <target>.part,下完原子 rename 到 <target>
  • .part 续传:进程重启后 fs 检测到 <target>.part 存在 → 计算字节数 → Range: bytes=<n>- 续传(同进程内重启 OK,跨进程也 OK)。
  • 目录递归:cloudreve list 拉目录树 → 逐个下载。

target 路径语义

对齐 cp / scp / wget -O:单文件传输时,target 不一定是目录。

场景行为
up foo.apk /baidu-migrate/foo.apk (target 不存在)上传到 /baidu-migrate/foo.apk (target 当文件路径)
up foo.apk /baidu-migrate/ (target 是已存在目录)上传到 /baidu-migrate/foo.apk (传统 join basename)
up -rf ./photos /backup/photos (目录递归)target 始终当目录, 内部文件按相对路径 join
dl /remote/foo.apk foo.apk (target 不存在)下载到 ./foo.apk (target 当文件路径)
dl /remote/foo.apk ./downloads/ (target 是已存在目录)下载到 ./downloads/foo.apk (传统 join basename)
dl -rf /remote/photos ./photos (目录递归)target 始终当目录

判定规则: src 是文件 + target 不是已存在的目录 → target 当作完整文件路径 (不 join basename)。 其他场景 (src 是目录 / target 是已存在目录) → target 视为目录, 后续按相对路径 join。

冲突策略

模式up 目标存在dl 目标存在
skip跳过该文件跳过该文件
overwrite删除远端再传删除本地 .part + 目标再传

进度展示

单文件字节级 bar:

[####################------]   3.2 MiB/4.0 MiB  ( 1.2 MiB/s, ETA  1s) ./photo.jpg

目录递归时多文件按顺序处理(无并发),bar 复用。

错误退出

现象原因
local io: not found<src> 本地不存在(up)或 <target> 父目录不存在(dl
remote: 404远端路径不存在(dl)或目标父目录不存在(up
auth: token expiredtoken.json 过期且 refresh 失败 → cr4sync login
conflict: target exists冲突 skip 模式遇到目标存在(信息性,不是错误)