Skip to content

Cnotech/cloud139

Repository files navigation

cloud139

139云盘(移动云盘)命令行客户端,支持文件上传、下载、管理等操作。

注意:当前仅实现了个人云功能,不支持家庭云/和家亲/群组。

功能特性

  • 账号登录
  • 文件列表查看
  • 文件上传/下载
  • 文件删除
  • 目录创建
  • 文件移动
  • 文件复制
  • 文件重命名
  • 目录同步

快速开始

安装

GitHub Releases 下载对应平台的预编译二进制文件,然后添加到系统 PATH 中。

或者从源码编译:

# 克隆项目
git clone https://github.com/Cnotech/cloud139.git
cd cloud139

# 编译
cargo build -r

# 可执行文件位于 target/release/cloud139

登录

cloud139 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 时也写入该路径

命令参考

login

登录139云盘账号。

cloud139 login -t <TOKEN>

参数说明:

参数 简写 必填 说明
--token -t 授权Token

示例:

# 登录
cloud139 login -t your_authorization_token

ls

列出云盘文件。

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

upload

上传文件到云盘。

cloud139 upload <本地路径> [远程目录] [-f]

参数说明:

参数 简写 必填 说明
本地路径 - 要上传的本地文件路径
远程目录 - 云盘目标目录,默认:/
--force -f 强制继续,如果云端存在同名文件则自动重命名

示例:

# 上传文件到根目录
cloud139 upload ./file.txt /

# 上传文件到指定目录
cloud139 upload ./folder/photo.jpg /backup/

# 强制上传,同名文件自动重命名
cloud139 upload ./file.txt / -f

download

从云盘下载文件。

cloud139 download <远程路径> [本地路径]

参数说明:

参数 简写 必填 说明
远程路径 - 云盘文件路径
本地路径 - 本地保存路径,默认:当前目录的同名文件

示例:

# 下载文件到当前目录
cloud139 download /file.txt

# 下载文件到指定路径
cloud139 download /folder/photo.jpg ./downloads/

rm

删除云盘文件或目录。

cloud139 rm <路径> -y

参数说明:

参数 简写 必填 说明
路径 - 要删除的文件或目录路径
--yes -y 确认删除

示例:

# 删除文件
cloud139 rm /file.txt -y

# 删除目录
cloud139 rm /folder -y

mkdir

在云盘创建目录。

cloud139 mkdir <路径> [-f]

参数说明:

参数 简写 必填 说明
路径 - 新目录路径,格式:/父目录/新目录名
--force -f 强制继续,如果云端存在同名目录则自动重命名

示例:

# 创建目录
cloud139 mkdir /newfolder

# 创建嵌套目录
cloud139 mkdir /parent/child

# 强制创建,同名目录自动重命名
cloud139 mkdir /newfolder -f

mv

移动文件或目录。

cloud139 mv <源路径...> <目标路径> [-f]

参数说明:

参数 简写 必填 说明
源路径 - 源文件路径,支持多个,用空格分隔
目标路径 - 目标路径
--force -f 强制继续,如果云端存在同名文件则自动重命名

示例:

# 移动单个文件
cloud139 mv /old.txt /new.txt

# 移动多个文件到目录
cloud139 mv /file1.txt /file2.txt /folder/

# 强制移动,同名文件自动重命名
cloud139 mv /file.txt /folder/ -f

cp

复制文件或目录。

cloud139 cp <源路径> <目标路径> [-f]

参数说明:

参数 简写 必填 说明
源路径 - 源文件路径
目标路径 - 目标路径
--force -f 强制继续,如果云端存在同名文件则自动重命名

示例:

# 复制文件到指定目录
cloud139 cp /file.txt /backup/

# 强制复制(云端自动重命名)
cloud139 cp /file.txt /backup/ -f

rename

重命名文件或目录。

cloud139 rename <源路径> <新名称>

参数说明:

参数 简写 必填 说明
源路径 - 源文件路径
新名称 - 新名称

示例:

# 重命名文件
cloud139 rename /oldname.txt newname.txt

# 重命名目录
cloud139 rename /folder/old newname

sync

同步本地目录和云端目录。

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)。

读取时按以下优先级查找:

  1. 通过全局参数 --config <PATH> 指定的路径
  2. 当前工作目录下的 cloud139rc.toml
  3. 全局路径 ~/.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

技术栈

许可证

MIT License - see LICENSE 文件

About

中国移动云盘 CLI

Topics

Resources

License

Stars

Watchers

Forks

Contributors