您的位置:首页 > 文旅 > 美景 > s3cmd安装、配置及使用

s3cmd安装、配置及使用

2024/10/11 5:25:32 来源:https://blog.csdn.net/codelearning/article/details/142267161  浏览:    关键词:s3cmd安装、配置及使用

s3cmd安装、配置及使用

1. s3cmd 简介

S3cmd 是一个用于管理 Amazon S3 和其他兼容 S3 存储服务(如 MinIO、DigitalOcean Spaces 等)的命令行工具。它提供了便捷的文件上传、下载、同步、删除等操作。

2. s3cmd 安装

s3cmd 可以通过多种方式安装,以下介绍几种常见的方法。

2.1 使用包管理器安装

在不同的操作系统上,可以使用以下命令安装:

Ubuntu/Debian:

sudo apt-get update
sudo apt-get install s3cmd

CentOS/RHEL:

sudo yum install epel-release
sudo yum install s3cmd

MacOS (Homebrew):

brew install s3cmd

2.2 使用 Python Pip 安装

如果你更喜欢使用 pip 来安装,可以使用以下命令:

pip install s3cmd

3. s3cmd 配置

安装完 S3cmd 后,第一次使用前需要进行配置。你可以通过以下命令启动配置过程:

(base) james@MacBook ~ % s3cmd --configureEnter new values or accept defaults in brackets with Enter.
Refer to user manual for detailed description of all options.Access key and Secret key are your identifiers for Amazon S3. Leave them empty for using the env variables.
# AK和SK。从 AWS 管理控制台获取,也可以用于其他 S3 兼容服务的 API 密钥。
Access Key: BB6711BLVHS8vlz1nieK
Secret Key: kTtIU2ZpbJcE09wiByhz8FMee81B8f53sgq21dwZ
#  S3 存储桶所在的区域
Default Region [US]: zh-east-1# S3访问端点。本次测试连接本地的minio
Use "s3.amazonaws.com" for S3 Endpoint and not modify it to the target Amazon S3.
S3 Endpoint [s3.amazonaws.com]: 127.0.0.1#  使用 "%(bucket)s.s3.amazonaws.com" 作为目标 Amazon S3。如果目标 S3 系统支持基于 DNS 的存储桶,可以使用 "%(bucket)s" 和 "%(location)s" 变量。
Use "%(bucket)s.s3.amazonaws.com" to the target Amazon S3. "%(bucket)s" and "%(location)s" vars can be used
if the target S3 system supports dns based buckets.
DNS-style bucket+hostname:port template for accessing a bucket [%(bucket)s.s3.amazonaws.com]:Encryption password is used to protect your files from reading
by unauthorized persons while in transfer to S3
# 是否启用加密,默认不启用。
Encryption password:
Path to GPG program:When using secure HTTPS protocol all communication with Amazon S3
servers is protected from 3rd party eavesdropping. This method is
slower than plain HTTP, and can only be proxied with Python 2.7 or newer
# 是否启用 HTTPS,推荐选择 `Yes` 以确保数据传输安全。
Use HTTPS protocol [Yes]: # 如果需要代理访问,可以填写代理服务器地址
On some networks all internet access must go through a HTTP proxy.
Try setting it here if you can't connect to S3 directly
HTTP Proxy server name:New settings:Access Key: BB6711BLVHS8vlz1nieKSecret Key: kTtIU2ZpbJcE09wiByhz8FMee81B8f53sgq21dwZDefault Region: zh-east-1S3 Endpoint: 127.0.0.1DNS-style bucket+hostname:port template for accessing a bucket: %(bucket)s.s3.amazonaws.comEncryption password:Path to GPG program: NoneUse HTTPS protocol: TrueHTTP Proxy server name:HTTP Proxy server port: 0# 不进行连接测试
Test access with supplied credentials? [Y/n] n# 保存设置
Save settings? [y/N] y
Configuration saved to '/Users/james/.s3cfg'

上述所有配置将保存到 ~/.s3cfg 文件中,可以后续根据手动修改文件内容进行调整。主要配置了如下几项:

access_key = BB6711BLVHS8vlz1nieK
...
# 端点是ip或者域名时参考如下语法配置
host_base = 127.0.0.1:9000
#host_base=s3.amazonaws.com
host_bucket = 127.0.0.1:9000/%(bucket)
#host_bucket = %(bucket)s.s3.amazonaws.com
...
secret_key = kTtIU2ZpbJcE09wiByhz8FMee81B8f53sgq21dwZ
...
use_https = False     # 这里修改不使用https

4. s3cmd 常用命令

S3cmd 提供了丰富的命令用于操作 S3 存储,这里列出一些常用的操作。

4.1 列出存储桶

s3cmd ls# 如果执行失败,可以加参数'-d'开启调试模式进行排错。

4.2 创建存储桶

s3cmd mb s3://bucket-name

4.3 上传文件到存储桶

s3cmd put file.txt s3://bucket-name/

4.4 从存储桶下载文件

s3cmd get s3://bucket-name/file.txt

4.5 删除存储桶中的文件

s3cmd del s3://bucket-name/file.txt

4.6 同步本地目录到存储桶

s3cmd sync /path/to/local/dir/ s3://bucket-name/

4.7 显示存储桶或文件的详细信息

s3cmd info s3://bucket-name/file.txt

4.8 列出存储桶中的文件

s3cmd ls s3://bucket-name/

4.9 设置对象的权限(公开或私有)

s3cmd setacl s3://bucket-name/file.txt --acl-public
s3cmd setacl s3://bucket-name/file.txt --acl-private

4.10 设定生命周期规则

s3cmd setlifecycle s3://bucket-name lifecycle.xml

lifecycle.xml文件示例如下:

<LifecycleConfiguration><Rule><ID>ExpireOldObjects</ID><Filter><Prefix></Prefix></Filter><Status>Enabled</Status><Expiration><Days>365</Days></Expiration></Rule>
</LifecycleConfiguration>

解释:

  • <ID>:规则的标识符,可以任意命名。
  • <Filter>:定义该规则适用的前缀。空前缀表示适用于所有对象。
  • <Status>:设置规则是否启用,EnabledDisabled
  • <Expiration>:指定对象在上传后多少天自动删除。这里是 365 天后。

5. 完整命令列表

通过s3cmd --help打印帮助信息查看更多的使用方法。

  • 创建存储桶

    s3cmd mb s3://BUCKET
    
  • 删除存储桶

    s3cmd rb s3://BUCKET
    
  • 列出对象或存储桶

    s3cmd ls [s3://BUCKET[/PREFIX]]
    
  • 列出所有存储桶中的对象

    s3cmd la
    
  • 将文件上传到存储桶

    s3cmd put FILE [FILE...] s3://BUCKET[/PREFIX]
    
  • 从存储桶下载文件

    s3cmd get s3://BUCKET/OBJECT LOCAL_FILE
    
  • 从存储桶中删除文件

    s3cmd del s3://BUCKET/OBJECT
    
  • 删除文件(del 命令的别名)

    s3cmd rm s3://BUCKET/OBJECT
    
  • 从 Glacier 存储中恢复文件

    s3cmd restore s3://BUCKET/OBJECT
    
  • 同步目录树到 S3(通过文件大小和 MD5 校验检查文件的新旧)

    s3cmd sync LOCAL_DIR s3://BUCKET[/PREFIX]
    
  • 查看存储桶的磁盘使用情况

    s3cmd du [s3://BUCKET[/PREFIX]]
    
  • 获取存储桶或文件的详细信息

    s3cmd info s3://BUCKET[/OBJECT]
    
  • 复制对象

    s3cmd cp s3://BUCKET1/OBJECT1 s3://BUCKET2[/OBJECT2]
    
  • 修改对象的元数据

    s3cmd modify s3://BUCKET1/OBJECT
    
  • 移动对象

    s3cmd mv s3://BUCKET1/OBJECT1 s3://BUCKET2[/OBJECT2]
    
  • 修改存储桶或文件的访问控制列表(ACL)

    s3cmd setacl s3://BUCKET[/OBJECT]
    
  • 修改存储桶的版本控制

    s3cmd setversioning s3://BUCKET enable|disable
    
  • 修改存储桶的对象所有权

    s3cmd setownership s3://BUCKET BucketOwnerPreferred|BucketOwnerEnforced|ObjectWriter
    
  • 修改公共访问规则

    s3cmd setblockpublicaccess s3://BUCKET BlockPublicAcls,IgnorePublicAcls,BlockPublicPolicy,RestrictPublicBuckets
    
  • 修改对象的法律保留状态

    s3cmd setobjectlegalhold STATUS s3://BUCKET/OBJECT
    
  • 修改对象的保留设置

    s3cmd setobjectretention MODE RETAIN_UNTIL_DATE s3://BUCKET/OBJECT
    
  • 修改存储桶策略

    s3cmd setpolicy FILE s3://BUCKET
    
  • 删除存储桶策略

    s3cmd delpolicy s3://BUCKET
    
  • 修改存储桶的跨源资源共享(CORS)设置

    s3cmd setcors FILE s3://BUCKET
    
  • 删除存储桶的 CORS 设置

    s3cmd delcors s3://BUCKET
    
  • 修改请求者付费策略

    s3cmd payer s3://BUCKET
    
  • 显示多部分上传

    s3cmd multipart s3://BUCKET [Id]
    
  • 终止多部分上传

    s3cmd abortmp s3://BUCKET/OBJECT Id
    
  • 列出多部分上传的分块

    s3cmd listmp s3://BUCKET/OBJECT Id
    
  • 启用或禁用存储桶访问日志记录

    s3cmd accesslog s3://BUCKET
    
  • 使用密钥签署任意字符串

    s3cmd sign STRING-TO-SIGN
    
  • 签署 S3 URL 以提供限时公共访问

    s3cmd signurl s3://BUCKET/OBJECT <expiry_epoch|+expiry_offset>
    
  • 修复存储桶中的无效文件名

    s3cmd fixbucket s3://BUCKET[/PREFIX]
    
  • 修改存储桶或文件的标签

    s3cmd settagging s3://BUCKET[/OBJECT] "KEY=VALUE[&KEY=VALUE ...]"
    
  • 获取存储桶或文件的标签

    s3cmd gettagging s3://BUCKET[/OBJECT]
    
  • 删除存储桶或文件的标签

    s3cmd deltagging s3://BUCKET[/OBJECT]
    
  • 创建网站托管存储桶

    s3cmd ws-create s3://BUCKET
    
  • 删除网站托管

    s3cmd ws-delete s3://BUCKET
    
  • 查看网站托管信息

    s3cmd ws-info s3://BUCKET
    
  • 设置或删除存储桶的到期规则

    s3cmd expire s3://BUCKET
    
  • 上传生命周期策略到存储桶

    s3cmd setlifecycle FILE s3://BUCKET
    
  • 获取存储桶的生命周期策略

    s3cmd getlifecycle s3://BUCKET
    
  • 删除存储桶的生命周期策略

    s3cmd dellifecycle s3://BUCKET
    
  • 上传通知策略到存储桶

    s3cmd setnotification FILE s3://BUCKET
    
  • 获取存储桶的通知策略

    s3cmd getnotification s3://BUCKET
    
  • 删除存储桶的通知策略

    s3cmd delnotification s3://BUCKET
    
  • 列出 CloudFront 分发点

    s3cmd cflist
    
  • 显示 CloudFront 分发点参数

    s3cmd cfinfo [cf://DIST_ID]
    
  • 创建 CloudFront 分发点

    s3cmd cfcreate s3://BUCKET
    
  • 删除 CloudFront 分发点

    s3cmd cfdelete cf://DIST_ID
    
  • 修改 CloudFront 分发点参数

    s3cmd cfmodify cf://DIST_ID
    
  • 使 CloudFront 对象失效

    s3cmd cfinval s3://BUCKET/OBJECT [s3://BUCKET/OBJECT ...]
    
  • 显示 CloudFront 失效请求的状态

    s3cmd cfinvalinfo cf://DIST_ID[/INVAL_ID]
    

有关更多信息、更新和新闻,请访问 S3cmd 网站:http://s3tools.org

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com