通过s3cmd操作对象存储

安装s3cmd

# Ubuntu/Debian
sudo apt-get install s3cmd

# CentOS/RHEL
sudo yum install s3cmd

# macOS (使用Homebrew)
brew install s3cmd

# 最通用的方法:使用pip(Python包管理器)
pip install s3cmd

配置s3cmd

vim ~/.s3cfg

输入如下内容:

[default]
bucket_location = huabei1
access_key = xxxx
secret_key = xxxx
default_mime_type = binary/octet-stream
enable_multipart = True
encoding = UTF-8
host_base = eos-cn-huabei1.ebcoud.com
host_bucket = eos-cn-huabei1.ebcloud.com%(bucket)
multipart_chunk_size_mb = 5
multipart_copy_chunk_size_mb = 1024
multipart_max_chunks = 10000
send_chunk = 65536
signature_v2 = False
use_https = true

其中:host_base,命名规范为:eos-{region-label}.ebcloud.com,华北一区为:eos-cn-huanbei1.ebcloud.com

其中:access_keysecret_key可以在,对象存储->访问密钥,进行创建,如下:

访问密钥

注意:

  • access_keysecret_key仅创建时可以进行下载,后续无法通过英博云控制台下载,请下载后妥善保管。
不同分区的eos url
分区名称分区Labeleos url
华北一区cn-huabei1eos-cn-huabei1.ebcloud.com
华北二区cn-huabei2暂不支持

使用s3cmd进行对象存储操作

桶操作
# 列出所有桶
s3cmd ls

# 创建新桶
s3cmd mb s3://my-backup-bucket

# 删除空桶
s3cmd rb s3://my-old-bucket

# 查看桶的大小和文件数量
s3cmd du s3://my-bucket
文件操作
# 上传单个文件
s3cmd put 本地文件路径 s3://桶名称/目标路径

# 递归上传整个目录(同步)
s3cmd sync 本地目录/ s3://桶名称/目标路径/

# 示例1:上传 backup.tar.gz 到桶的根目录
s3cmd put /backup/backup.tar.gz s3://my-backup-bucket/

# 示例2:同步本地 www 目录到桶中的 www-backup 目录
s3cmd sync /var/www/ s3://my-backup-bucket/www-backup/
下载文件/目录
# 下载单个文件
s3cmd get s3://桶名称/文件路径 本地目标路径

# 递归下载整个目录(同步)
s3cmd sync s3://桶名称/目录路径/ 本地目录/

# 示例1:下载一个文件
s3cmd get s3://my-backup-bucket/backup.tar.gz /restore/

# 示例2:同步远程目录到本地
s3cmd sync s3://my-backup-bucket/www-backup/ /var/www/
列出桶内的文件和目录
s3cmd ls s3://桶名称/[可选路径]
# 示例:列出 my-backup-bucket 桶中 www-backup 目录下的所有内容
s3cmd ls s3://my-backup-bucket/www-backup/
删除文件/目录
# 删除单个文件
s3cmd del s3://桶名称/文件路径

# 递归删除整个目录(慎用!)
s3cmd del --recursive s3://桶名称/目录路径/

# 示例1:删除一个文件
s3cmd del s3://my-backup-bucket/old-file.log

# 示例2:删除整个目录及其内容
s3cmd del --recursive s3://my-backup-bucket/old-backups/