139云盘(移动云盘)命令行客户端,支持文件上传、下载、管理等操作。
注意:当前仅实现了个人云功能,不支持家庭云/和家亲/群组。
- 账号登录
- 文件列表查看
- 文件上传/下载
- 文件删除
- 目录创建
- 文件移动
- 文件复制
- 文件重命名
- 目录同步
从 GitHub Releases 下载对应平台的预编译二进制文件,然后添加到系统 PATH 中。
或者从源码编译:
# 克隆项目
git clone https://github.com/Cnotech/cloud139.git
cd cloud139
# 编译
cargo build -r
# 可执行文件位于 target/release/cloud139cloud139 login -t <YOUR_TOKEN>Token 需要使用浏览器登陆移动云盘后打开开发者工具获取,具体步骤如下:
- 打开浏览器,登录移动云盘网页版
- 打开开发者工具(F12 或右键点击 -> 检查)
- 切换到
应用(Application)标签页,点击存储(Storage)-Cookie-https://yun.139.com - 找到
authorization项,复制其值即可
如果粘贴 Token 后提示
Invalid token,可尝试去除Basic前缀,或在 Token 前后增加单引号(')更多详情可参考:AList 文档
# 列出根目录文件
cloud139 ls /
# 列出指定目录文件
cloud139 ls /myfolder
# 上传文件到根目录
cloud139 upload ./file.txt /
# 上传文件到指定目录
cloud139 upload ./photo.jpg /backup/
# 下载文件到当前目录
cloud139 download /file.txt
# 下载文件到指定路径
cloud139 download /file.txt ./downloads/myfile.txt
# 删除文件
cloud139 rm /file.txt -y
# 删除目录
cloud139 rm /folder -y
# 创建目录
cloud139 mkdir /parent/newFolder
# 移动单个文件
cloud139 mv /old.txt /new.txt
# 移动多个文件到目录
cloud139 mv /file1.txt /file2.txt /folder/
# 复制文件到指定目录
cloud139 cp /file.txt /backup/
# 重命名文件
cloud139 rename /oldname.txt newname.txt
# 本地到云端同步(递归)
cloud139 sync ./local/path cloud:/remote/path -r
# 云端到本地同步(递归)
cloud139 sync cloud:/remote/path ./local/path -r| 参数 | 简写 | 默认值 | 说明 |
|---|---|---|---|
| --verbose | -v | info | 日志级别 (trace, debug, info, warn, error) |
| --config | -c | - | 指定配置文件路径。读取时优先使用该路径;login 时也写入该路径 |
登录139云盘账号。
cloud139 login -t <TOKEN>参数说明:
| 参数 | 简写 | 必填 | 说明 |
|---|---|---|---|
| --token | -t | 是 | 授权Token |
示例:
# 登录
cloud139 login -t your_authorization_token列出云盘文件。
cloud139 ls [路径] [-p <页码>] [-s <数量>] [-o <输出文件>]参数说明:
| 参数 | 简写 | 必填 | 说明 |
|---|---|---|---|
| 路径 | - | 否 | 文件路径,默认:/ |
| --page | -p | 否 | 页码,默认:1 |
| --page-size | -s | 否 | 每页数量,默认:100 |
| --output | -o | 否 | 将结果输出为JSON到指定文件 |
示例:
# 列出根目录
cloud139 ls
# 列出指定目录
cloud139 ls /myfolder
# 分页查看,每页50条,查看第2页
cloud139 ls / -p 2 -s 50
# 将结果输出为JSON文件
cloud139 ls / -o result.json上传文件到云盘。
cloud139 upload <本地路径> [远程目录] [-f]参数说明:
| 参数 | 简写 | 必填 | 说明 |
|---|---|---|---|
| 本地路径 | - | 是 | 要上传的本地文件路径 |
| 远程目录 | - | 否 | 云盘目标目录,默认:/ |
| --force | -f | 否 | 强制继续,如果云端存在同名文件则自动重命名 |
示例:
# 上传文件到根目录
cloud139 upload ./file.txt /
# 上传文件到指定目录
cloud139 upload ./folder/photo.jpg /backup/
# 强制上传,同名文件自动重命名
cloud139 upload ./file.txt / -f从云盘下载文件。
cloud139 download <远程路径> [本地路径]参数说明:
| 参数 | 简写 | 必填 | 说明 |
|---|---|---|---|
| 远程路径 | - | 是 | 云盘文件路径 |
| 本地路径 | - | 否 | 本地保存路径,默认:当前目录的同名文件 |
示例:
# 下载文件到当前目录
cloud139 download /file.txt
# 下载文件到指定路径
cloud139 download /folder/photo.jpg ./downloads/删除云盘文件或目录。
cloud139 rm <路径> -y参数说明:
| 参数 | 简写 | 必填 | 说明 |
|---|---|---|---|
| 路径 | - | 是 | 要删除的文件或目录路径 |
| --yes | -y | 是 | 确认删除 |
示例:
# 删除文件
cloud139 rm /file.txt -y
# 删除目录
cloud139 rm /folder -y在云盘创建目录。
cloud139 mkdir <路径> [-f]参数说明:
| 参数 | 简写 | 必填 | 说明 |
|---|---|---|---|
| 路径 | - | 是 | 新目录路径,格式:/父目录/新目录名 |
| --force | -f | 否 | 强制继续,如果云端存在同名目录则自动重命名 |
示例:
# 创建目录
cloud139 mkdir /newfolder
# 创建嵌套目录
cloud139 mkdir /parent/child
# 强制创建,同名目录自动重命名
cloud139 mkdir /newfolder -f移动文件或目录。
cloud139 mv <源路径...> <目标路径> [-f]参数说明:
| 参数 | 简写 | 必填 | 说明 |
|---|---|---|---|
| 源路径 | - | 是 | 源文件路径,支持多个,用空格分隔 |
| 目标路径 | - | 是 | 目标路径 |
| --force | -f | 否 | 强制继续,如果云端存在同名文件则自动重命名 |
示例:
# 移动单个文件
cloud139 mv /old.txt /new.txt
# 移动多个文件到目录
cloud139 mv /file1.txt /file2.txt /folder/
# 强制移动,同名文件自动重命名
cloud139 mv /file.txt /folder/ -f复制文件或目录。
cloud139 cp <源路径> <目标路径> [-f]参数说明:
| 参数 | 简写 | 必填 | 说明 |
|---|---|---|---|
| 源路径 | - | 是 | 源文件路径 |
| 目标路径 | - | 是 | 目标路径 |
| --force | -f | 否 | 强制继续,如果云端存在同名文件则自动重命名 |
示例:
# 复制文件到指定目录
cloud139 cp /file.txt /backup/
# 强制复制(云端自动重命名)
cloud139 cp /file.txt /backup/ -f重命名文件或目录。
cloud139 rename <源路径> <新名称>参数说明:
| 参数 | 简写 | 必填 | 说明 |
|---|---|---|---|
| 源路径 | - | 是 | 源文件路径 |
| 新名称 | - | 是 | 新名称 |
示例:
# 重命名文件
cloud139 rename /oldname.txt newname.txt
# 重命名目录
cloud139 rename /folder/old newname同步本地目录和云端目录。
cloud139 sync <源路径> <目标路径> [选项]同步方向:
云端路径需使用
cloud:前缀标识。
- 本地 → 云端:
cloud139 sync <本地路径> cloud:/<远程路径> - 云端 → 本地:
cloud139 sync cloud:/<远程路径> <本地路径>
参数说明:
| 参数 | 简写 | 必填 | 说明 |
|---|---|---|---|
| 源路径 | - | 是 | 本地路径或云端路径(cloud:/path) |
| 目标路径 | - | 是 | 本地路径或云端路径 |
| --recursive | -r | 否 | 递归同步子目录,空目录也会同步 |
| --dry-run | -n | 否 | 演习模式,只输出操作计划,不执行实际同步 |
| --delete | - | 否 | 删除目标中源没有的文件或空目录 |
| --exclude | - | 否 | 排除匹配的路径(glob 模式),可多次指定 |
| --jobs | -j | 否 | 并发传输数量上限,默认:4 |
示例:
# 本地到云端同步(递归、删除目标多余文件、8并发)
cloud139 sync ./backup cloud:/backup -r --delete -j 8
# 云端到本地同步(先演习预览)
cloud139 sync cloud:/photos ./photos -r -n
# 排除特定文件或目录
cloud139 sync . cloud:/project -r -n --exclude .git/** --exclude target/**登录成功后,配置信息默认保存到 ~/.config/cloud139/cloud139rc.toml(Windows 下为 %APPDATA%\cloud139\cloud139rc.toml)。
读取时按以下优先级查找:
- 通过全局参数
--config <PATH>指定的路径 - 当前工作目录下的
cloud139rc.toml - 全局路径
~/.config/cloud139/cloud139rc.toml
login 时如果指定了 --config <PATH>,则将配置文件写入该路径;否则写入全局路径(若当前工作目录已存在 cloud139rc.toml,则沿用该文件)。
authorization = "..."
account = "13800138000"
storage_type = "personal_new"
cloud_id = null
custom_upload_part_size = 0
report_real_size = true
use_large_thumbnail = false
personal_cloud_host = "https://personal-kd-njs.yun.139.com/hcy"
refresh_token = "..."
token_expire_time = 1775454807088
root_folder_id = null
user_domain_id = null| 字段 | 类型 | 说明 |
|---|---|---|
authorization |
String | 授权Token,用于API请求认证 |
account |
String | 登录账号(手机号) |
storage_type |
String | 存储类型:personal_new(个人云)、family(家庭云)、group(和家亲/群组) |
cloud_id |
String/null | 云盘ID,家庭云/和家亲时需要设置 |
custom_upload_part_size |
Number | 自定义分片大小(字节),0表示使用默认值 |
report_real_size |
Boolean | 上传时是否报告真实文件大小 |
use_large_thumbnail |
Boolean | 是否使用大缩略图 |
personal_cloud_host |
String | 个人云API服务器地址 |
refresh_token |
String | 刷新Token,用于自动续期 |
token_expire_time |
Number | Token过期时间(毫秒时间戳) |
root_folder_id |
String/null | 根目录ID |
user_domain_id |
String/null | 用户域ID |
cloud139/
├── Cargo.toml # 项目配置
├── LICENSE # MIT 许可证
├── cloud139rc.toml # 本地配置文件(可选,存在时优先生效)
└── src/
├── main.rs # 入口文件
├── lib.rs # 库入口
├── client/ # API客户端
│ ├── api.rs # API接口
│ ├── auth.rs # 认证模块
│ └── mod.rs
├── commands/ # 命令实现
│ ├── login.rs
│ ├── list.rs
│ ├── upload.rs
│ ├── download.rs
│ ├── delete.rs
│ ├── mkdir.rs
│ ├── mv.rs
│ ├── cp.rs
│ ├── rename.rs
│ └── mod.rs
├── config/ # 配置管理
│ └── mod.rs
├── models/ # 数据模型
│ ├── types.rs
│ └── mod.rs
└── utils/ # 工具函数
├── crypto.rs # 加密相关
├── logger.rs # 日志
├── width.rs # 终端宽度
└── mod.rs
- Rust - 编程语言
- clap - CLI 参数解析
- reqwest - HTTP 客户端
- tokio - 异步运行时
- serde - 序列化/反序列化
- aes-gcm - 加密
- chrono - 日期时间处理
- directories - 目录路径处理
MIT License - see LICENSE 文件