一个用 Rust 编写的 OSS/S3 对象存储上传下载工具,兼容 AWS S3 API。
- 上传: 支持单文件上传和分块上传(自动检测文件大小)
- 下载: 从 OSS 下载文件到本地
- 删除: 删除 OSS 上的文件
- 并发上传: 大文件自动使用多线程分块上传
- 进度显示: 上传时显示进度条
# 克隆仓库
cd oss-uploader
# 编译当前平台
cargo build --release
# 或使用 Makefile
make build# macOS Intel + Apple Silicon
make build-mac
# Linux x86_64 + ARM64
make build-linux
# 所有平台
make build-all
# 或使用脚本
chmod +x build.sh
./build.sh x86_64-apple-darwin
./build.sh x86_64-apple-darwin aarch64-unknown-linux-musl # macOS + Linux 静态链接通过环境变量配置 OSS 连接信息(所有配置项都是必需的):
export OSS_ACCESS_KEY="your-access-key" # 必需: OSS Access Key
export OSS_SECRET_KEY="your-secret-key" # 必需: OSS Secret Key
export OSS_BUCKET="your-bucket" # 必需: OSS Bucket 名称
export OSS_ENDPOINT="https://s3.com" # 必需: OSS Endpoint URL
export OSS_REGION="" # 必需: OSS Region# 基本用法(key 默认为 <prefix>/filename)
oss-uploader upload /path/to/file.txt
# 指定 key
oss-uploader upload /path/to/file.txt -k myfolder/file.txt# 下载到当前目录
oss-uploader download myfolder/file.txt
# 指定输出路径
oss-uploader download myfolder/file.txt -o /path/to/save/oss-uploader delete myfolder/file.txtoss-uploader/
├── Cargo.toml # 项目配置
├── Makefile # 构建脚本
├── build.sh # 交叉编译脚本
├── README.md # 本文件
├── src/
│ ├── main.rs # 主程序入口
│ └── lib.rs # 核心库
├── tests/
│ └── integration_tests.rs # 集成测试
└── .cargo/
└── config.toml # Cargo 配置(交叉编译)
# 运行单元测试
cargo test
# 运行集成测试(需要真实 OSS 凭证)
export OSS_ACCESS_KEY=...
export OSS_SECRET_KEY=...
cargo test --test integration_tests -- --ignored支持以下平台的交叉编译(Linux 使用 musl 静态链接):
| 平台 | Target | 命令 | 说明 |
|---|---|---|---|
| macOS Intel | x86_64-apple-darwin | make build-mac-intel |
动态链接 |
| macOS ARM | aarch64-apple-darwin | make build-mac-arm |
动态链接 |
| Linux x64 | x86_64-unknown-linux-musl | make build-linux-x64 |
静态链接,不依赖 glibc |
| Linux ARM | aarch64-unknown-linux-musl | make build-linux-arm |
静态链接,不依赖 glibc |
Linux 版本使用 musl 静态链接,生成完全独立的二进制文件:
- ✅ 不依赖系统的 glibc,可在任何 Linux 发行版上运行
- ✅ Alpine Linux 完美支持
- ✅ 容器化部署无需额外依赖
- ✅ 二进制文件更便携
MIT License
整个项目是按照我之前写的python版本(boto3库)使用opencode AI重写的,包括主程序,测试,build脚本,github workflow等等。