s3cmd with s3-compatible OSS
S3cmd
是一款免费的命令行工具和客户端,用来上传、下载和管理亚马逊 S3 对象存储以及其他兼容 S3 协议的对象存储(例如 Google Cloud Storage、DreamHost DreamObjects)上的数据。
由于它是命令行下的程序,因此更适合对命令行比较熟悉的用户使用。结合 cron 计划任务,s3cmd 也是理想的自动化备份数据到 s3 的脚本方案。
S3cmd 用 Python 语言写成,采用 GNU Public License v2 (GPLv2)
协议开源,商业和个人均可免费使用。
安装 s3cmd
使用 pip
是最理想的安装方式:
$ pip install s3cmd
使用
创建 s3cmd 配置文件
s3cmd 默认读取 ~/.s3cfg
作为配置文件,也可以直接在命令中指定参数。
可以直接通过程序的交互式命令创建配置文件:
$ s3cmd --configure
也可以手动创建配置文件:
$ nano ~/.s3cfg
# Setup endpoint: hostname of the Web App
# 阿里云
#host_base = oss-cn-shanghai.aliyuncs.com
#host_bucket = %(bucket)s.oss-cn-shanghai.aliyuncs.com
# 京东云
host_base = s3.cn-south-1.jcloudcs.com
host_bucket = %(bucket)s.s3.cn-south-1.jcloudcs.com
# 是否使用 https 协议
use_https = True
# 访问 API 的 ID 和 密钥
access_key = ABCDEFGSDFSDF
secret_key = HIJKLMNOPQRSTUVWXYZ000011111
列出 buckets 中的文件
假设有一个名为 getnas
的 bucket
$ s3cmd ls s3://getnas
DIR s3://getnas/images/
2018-08-29 04:14 65045 s3://getnas/Snip20180828_11.png
2018-08-29 04:14 102944 s3://getnas/Snip20180828_12.png
2018-08-29 04:14 236808 s3://getnas/Snip20180828_13.png
2018-08-29 04:14 66786 s3://getnas/Snip20180828_14.png
上传文件或目录
上传文件到 bucket 下的 images
目录中:
$ s3cmd put test.jpg s3://getnas/images/
上传目录 videos
到 bucket 根目录:
$ s3cmd put -r videos s3://getnas
兼容 S3 协议的对象存储
- 阿里云 OSS
- 腾讯云 COS
- DigitalOcean Space
- 京东云 OSS
- Google Cloud Storage
- DreamHost DreamObjects
- Minio 自建对象存储
**提示:**京东云 OSS 对象存储新版 API 开始兼容 S3 协议,兼容 S3 协议的 Endpoint 为
s3.cn-south-1.jcloudcs.com
,不是默认的oss.cn-south-1.jcloudcs.com
。即超链接中的oss
修改为s3
。