Install
openclaw skills install @thcjp/cloud-storage-manager-freeopenclaw skills install @thcjp/cloud-storage-manager-free面向多云存储场景的统一文件管理工具,覆盖主流对象存储与网盘服务,提供上传、下载、同步、成本核算等核心能力。
本工具为多云存储操作提供统一抽象层,屏蔽各家Provider的API差异,让用户用单一命令完成跨云操作。设计目标:
| 能力 | 描述 | 免费版限制 |
|---|---|---|
| 多Provider接入 | S3、GCS、Azure Blob、R2、B2、Drive、Dropbox、OneDrive | 单次单源单目标 |
| 文件上传 | 单文件与小批量上传 | 单文件≤5GB |
| 文件下载 | 单文件与小批量下载 | 单文件≤5GB |
| 文件同步 | 增量同步源到目标 | 单向同步 |
| 成本预估 | 转账前预估出口流量与API费用 | 基础估算 |
| 校验和验证 | 上传/下载后验证大小与MD5 | 自动验证 |
| 断点续传 | 大文件分块上传 | 支持 |
| 权限管理 | Provider凭据配置与轮换 | 单用户 |
用input_params参数进行配置。
输入: 用户提供核心功能执行所需的指令和必要参数。 处理: 解析核心功能执行的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回核心功能执行的响应数据,包含状态码、结果和日志。
input_params参数,支持创建/查询/导出操作用config_options参数进行配置。
输入: 用户提供参数配置与调用所需的指令和必要参数。 处理: 解析参数配置与调用的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回参数配置与调用的响应数据,包含状态码、结果和日志。
config_options参数,支持修改/重置/导入操作用output_format参数进行配置。
输入: 用户提供结果处理与输出所需的指令和必要参数。 处理: 解析结果处理与输出的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回结果处理与输出的响应数据,包含状态码、结果和日志。
output_format参数,支持导出/保存/转换操作
能力覆盖范围:本skill的核心能力覆盖以下场景关键词:跨云存储服务统一、管理文件的上传、同步与成本核算、支持多、基础操作、面向多云存储场景、的统一文件管理工、AWS、Cloudflare、Backblaze、等对象存储与、Google、等网盘服务、核心能力等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持。独立开发者希望将S3上的1TB归档数据迁移到Cloudflare R2(零出口费):
csm transfer \
--source s3://my-bucket/archive/ \
--target r2://my-bucket/archive/ \
--estimate-cost \
--checkpoint ./transfer-state.json
执行前估算:
运维工程师需要将关键配置文件同时备份到Azure Blob与Backblaze B2:
csm upload \
--file ./configs/ \
--targets azure-blob://backup/configs/,b2://backup/configs/ \
--compress \
--encrypt
个人用户从Dropbox共享文件夹下载所有图片到本地:
csm download \
--source dropbox://shared/photos-2024/ \
--target ./local-photos/ \
--filter "*.jpg,*.png" \
--parallel 4
将团队Drive中的项目文档单向同步到OneDrive作为备份:
csm sync \
--source gdrive://team-project/docs/ \
--target onedrive://backup/team-project/ \
--direction one-way \
--delete-distant false \
--schedule "0 2 * * *"
以下场景云存储管理器(免费版)不适合处理:
需要项目管理、任务规划、进度跟踪、团队协作时使用。不适用于非本工具能力范围的需求。
csm config add s3 \
--access-key $AWS_ACCESS_KEY_ID \
--secret-key $AWS_SECRET_ACCESS_KEY \
--region us-east-1
# ...
csm config add r2 \
--account-id $CLOUDFLARE_ACCOUNT_ID \
--access-key $R2_ACCESS_KEY \
--secret-key $R2_SECRET_KEY \
--endpoint https://<account>.r2.cloudflarestorage.com
凭据存储在~/.csm/credentials/(已chmod 600)。
csm config list
输出:
Configured providers:
- s3 (us-east-1)
- r2 (auto)
- azure-blob (eastus)
csm upload \
--file ./report.pdf \
--target s3://my-bucket/reports/
输出:
Uploading report.pdf to s3://my-bucket/reports/
Size: 2.4 MB
Estimated cost: $0.001 (PUT requests)
Progress: ████████████████████ 100%
Uploaded in 1.2s
Verification: MD5 match ✓
任何大文件或批量操作前,使用--estimate-cost预估:
API返回200仅表示请求被接受,必须额外验证:
Content-Length)任何删除操作前:
长时间操作可能中途失败:
--checkpoint保存进度--resume恢复各家Provider速率限制差异巨大:
| Provider | 限制 |
|---|---|
| AWS S3 | 3500 PUT/s per prefix,5500 GET/s per prefix |
| Google Drive | 750 GB/day upload |
| Dropbox | 批量API限制 |
| Azure Blob | 20000 requests/s per account |
| 概念 | AWS S3 | Google Drive | Dropbox | OneDrive |
|---|---|---|---|---|
| 共享文件夹 | Bucket ACL | "Shared with me" | Team Folders | SharePoint |
| 文件标识 | Key | File ID | Path | Item ID |
| 版本控制 | 显式启用 | 自动 | 180天 | 自动 |
| 权限模型 | ACLs + Policies | Roles | Link-based | Sharing links |
# ~/.csm/credentials.yaml
providers:
s3:
access_key: ${AWS_ACCESS_KEY_ID}
secret_key: ${AWS_SECRET_ACCESS_KEY}
region: us-east-1
# ...
r2:
account_id: ${CLOUDFLARE_ACCOUNT_ID}
access_key: ${R2_ACCESS_KEY}
secret_key: ${R2_SECRET_KEY}
# ...
azure-blob:
connection_string: ${AZURE_STORAGE_CONNECTION_STRING}
# ...
gdrive:
client_id: ${GDRIVE_CLIENT_ID}
client_secret: ${GDRIVE_CLIENT_SECRET}
refresh_token: ${GDRIVE_REFRESH_TOKEN}
# ...
defaults:
parallel: 4
chunk_size: 8MB
retry: 3
timeout: 300s
# sync-rules.yaml
rules:
- name: archive-to-r2
source: s3://hot-data/
target: r2://archive/
schedule: "0 3 * * 0" # 每周日凌晨3点
filter: "*.log,*.tar.gz"
compress: true
encrypt: true
delete-after: false # 源不删除
notify: feishu
csm config rotate s3--dry-run预览将删除的文件--checkpoint,避免从头重试--rate-limit 100,避免触发Provider限流A:跨Region带宽受Provider出口限制,建议启用Provider的加速端点(如S3 Transfer Acceleration、Azure ExpressRoute)。
A:可以。启用--checkpoint保存进度,失败后--resume恢复,已上传分块不重复。
A:这是常见陷阱,必须执行HEAD请求验证文件存在与大小匹配。本工具自动执行此验证。
A:所有操作前使用--estimate-cost预估,重点关注egress费用(常被忽视)。
A:免费版支持配置多个Provider凭据,但单次操作仅支持单源单目标。
| 错误场景(现象) | 可能原因 | 解决步骤 | 优先级 |
|---|---|---|---|
| 凭据失效 | AccessKey过期或被禁用 | 使用csm config verify s3检查并轮换 | P0 |
| 上传卡住 | 网络中断或Provider限流 | 检查--checkpoint,使用--resume恢复 | P1 |
| 文件大小不一致 | 上传中断未完成 | 验证Content-Length,重新上传 | P1 |
| 速率限制触发 | 超过Provider配额 | 降低--parallel,启用--rate-limit | P1 |
| 跨区延迟高 | 跨大区传输 | 启用Provider加速端点 | P2 |
| 校验和不匹配 | 数据传输损坏 | 重新上传,执行ping命令测试网络连通性,检查防火墙和代理设置稳定性 | P0 |
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| AWS CLI | 命令行工具 | 可选(S3需要) | pip install awscli |
| rclone | 命令行工具 | 可选(多Provider抽象层) | apt install rclone 或 brew install rclone |
| LLM API | API | 必需 | 由Agent平台内置LLM提供 |
AWS_ACCESS_KEY_ID与AWS_SECRET_ACCESS_KEY环境变量CLOUDFLARE_ACCOUNT_ID与R2 AccessKey对AZURE_STORAGE_CONNECTION_STRINGGDRIVE_CLIENT_ID/CLIENT_SECRET/REFRESH_TOKEN~/.csm/credentials/目录统一管理,文件权限600本免费体验版聚焦个人与单源单目标场景,限制以下高级能力:
解锁全部高级能力请使用专业版:cloud-storage-manager-pro