S3cmd #
s3cmd是一个用于管理Amazon S3(Simple Storage Service)存储的开源命令行工具。它允许用户通过命令行界面轻松地与Amazon S3进行交互,执行各种操作,例如:
- 上传和下载文件:可以快速将本地文件上传到S3存储桶,或从S3下载文件到本地计算机。
- 同步文件夹:支持将本地文件夹与S3存储桶同步,可以自动检测并传输变更的文件。
- 管理存储桶:创建、删除、列出存储桶,设置存储桶策略和权限。
- 设置访问控制:管理文件和存储桶的访问权限,包括公共访问和私有访问设置。
- 支持多种操作:列出文件、复制文件、移动文件、删除文件等。
- 配置灵活:支持通过配置文件设置A凭证和其他参数。
s3cmd是一个非常实用的工具,特别适合需要scripting和自动化S3操作的开发者和系统管理员。
安装 #
1pipx install s3cmd -vvv --index-url=https://mirrors.aliyun.com/pypi/simple
基本使用 #
生成下载预签名URL #
1s3cmd signurl s3://BUCKET/OBJECT <expiry_epoch|+expiry_offset>
2# 60秒后过期
3s3cmd signurl s3://bucket-name/path/to/file.txt +60
4
5s3cmd signurl s3://bucket-name/path/to/file.txt `date -d 'now + 2 hour' +%s`
6s3cmd signurl s3://bucket-name/path/to/file.txt `date -d 'now + 2 minute' +%s`
例子:
1echo "hello world" > test.txt
2
3s3cmd put test.txt s3://pvt-bucket/test.txt
4upload: 'test.txt' -> 's3://pvt-bucket/test.txt' [1 of 1]
512 of 12 100% in 0s 2.03 KB/s done
6
7# test.txt是私有文件, 无法匿名读取
8curl http://10.111.217.90/pvt-bucket/test.txt
9<?xml version="1.0" encoding="UTF-8"?>
10<Error>
11 <Code>AccessDenied</Code>
12 <Message></Message>
13 <BucketName>pvt-bucket</BucketName>
14 <RequestId>tx00000cc6dc87c4556ca05-0067496520-90256-ceph-object-store</RequestId>
15 <HostId>90256-ceph-object-store-ceph-object-store</HostId>
16</Error>
17
18# 生成下载专用的预签名URL,有效期为2分钟
19s3cmd signurl s3://pvt-bucket/test.txt `date -d 'now + 2 minute' +%s`
20http://10.111.217.90:80/pvt-bucket/test.txt?AWSAccessKeyId=ZJCD6ZRDQA5X1FY3Z7XA&Expires=1732863649&Signature=B3143IKPU%2FkKpxQOnUBaquIpXGo%3D
21
22# 在2分钟内可以访问, 注意访问时不要加默认的80端口,否则会报签名错误
23curl "http://10.111.217.90/pvt-bucket/test.txt?AWSAccessKeyId=ZJCD6ZRDQA5X1FY3Z7XA&Expires=1732863649&Signature=B3143IKPU%2FkKpxQOnUBaquIpXGo%3D"
24hello world
25
26# 在2分钟后将无法访问
27curl "http://10.111.217.90/pvt-bucket/test.txt?AWSAccessKeyId=ZJCD6ZRDQA5X1FY3Z7XA&Expires=1732863649&Signature=B3143IKPU%2FkKpxQOnUBaquIpXGo%3D"
28<?xml version="1.0" encoding="UTF-8"?><Error><Code>AccessDenied</Code><Message></Message><RequestId>tx0000089f6d4a2302ab5e2-00674966a2-90256-ceph-object-store</RequestId><HostId>90256-ceph-object-store-ceph-object-store</HostId></Error>