#s3cmd 是用于创建S3桶,上传,检索和管理数据到对象存储命令行实用程序。 通常用于对象存储服务桶和对象数据管理,包括创建桶、上传、检索、删除及本地与对象存储服务间数据同步等。
yum install s3cmd
apt-get install s3cmd
$HOME/.s3cfg
配置文件s3cmd --configure
s3cmd -c FILE
FILE为已完成配置的文件推荐更改项:
access_key =
secret_key =
host_base = host:port
host_bucket = %(bucket)s.host
use_https = False #Default is True
s3cmd mb s3://BUCKET
s3cmd mb s3://my_bucket_name
s3cmd rb s3://BUCKET
s3cmd rb s3://my_bucket_name
s3cmd ls [s3://BUCKET[/PREFIX]]
s3cmd ls s3://my_bucket_name
s3cmd ls s3://my_bucket_name/file.txt
列举所有Bucketss3cmd ls
上传Object到某个Buckets3cmd put FILE [FILE...] s3://BUCKET[/PREFIX]
上传单个文件
s3cmd put file.txt s3://my_bucket_name/file.txt
批量上传文件(上传当前目录下的所有文件)s3cmd put ./* s3://my_bucket_name/
递归上传文件(递归上传当前目录下的所有文件)s3cmd put ./* s3://my_bucket_name/ -r
注:当文件大于15MB
时,会采用分段上传,可通过与--multipart-chunk-size-mb=SIZE
联用,设置上传块大小。也可以与--disable-multipart
联用取消分段上传
s3cmd get s3://BUCKET/OBJECT LOCAL_FILE
下载单个文件
s3cmd get s3://my_bucket_name/file.txt file.txt
批量下载(下载到当前目录)s3cmd get s3://my-bucket-name/* ./
s3cmd del s3://BUCKET/OBJECT
或s3cmd rm s3://BUCKET/OBJECT
s3cmd del s3://my_bucket_name/file.txt
或s3cmd rm s3://my_bucket_name/file.txt
rm
是del
的别名
s3cmd restore s3://BUCKET/OBJECT
s3cmd restore s3://my_bucket_name/file.txt
s3cmd sync LOCAL_DIR s3://BUCKET[/PREFIX]
或 s3://BUCKET[/PREFIX] LOCAL_DIR
同步当前目录下的所有文件:
s3cmd sync ./ s3://my_bucket_name/
s3cmd du [s3://BUCKET[/PREFIX]]
s3cmd du s3://my_bucket_name
得到:
179813669 19 objects s3://my_bucket_name/s3cmd du -H s3://my_bucket_name
得到:
171M 19 objects s3://test_bucket01/
s3cmd info s3://BUCKET[/OBJECT]
s3cmd info s3://my_bucket_name
s3cmd info s3://my_bucket_name/file.txt
s3cmd cp s3://BUCKET1/OBJECT1 s3://BUCKET2[/OBJECT2]
s3cmd cp s3://my_bucket_name1/file1.txt s3://my_bucket_name2/file2.txt
s3cmd modify s3://BUCKET1/OBJECT
修改example.jpg的
--mime-type
为imge/jpeg
s3cmd modify --mime-type="image/jpeg" s3://my_bucket01/example.jpg
s3cmd mv s3://BUCKET1/OBJECT1 s3://BUCKET2[/OBJECT2]
s3cmd mv s3://my_bucket_name1/file1.txt s3://my_bucket_name2/file2.txt
s3cmd setacl s3://BUCKET[/OBJECT]
Bucket和Bucket所有Object权限私有
s3cmd setacl s3://my_bucket_name -acl-private --recursive
Bucket权限私有Object权限不变s3cmd setacl s3://my_bucket_name -acl-private
s3cmd setpolicy FILE s3://BUCKET
本地策略policy.json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::volpublic/*"
]}]}
设置my_bucket_name的Bucket策略
s3cmd setpolicy policy.json s3://my_bucket_name
删除Bucket策略s3cmd delpolicy s3://BUCKET
修改Bucket CORSs3cmd setcors FILE s3://BUCKET
删除Bucket CORSs3cmd delcors s3://BUCKET
修改Bucket请求者付费策略s3cmd payer s3://BUCKET
修改为申请方付款存储桶
s3cmd payer s3://BUCKET --requester-pays
修改为存储桶拥有者付款存储桶s3cmd payer s3://BUCKET
显示分段上传s3cmd multipart s3://BUCKET [Id]
放弃分段上传s3cmd abortmp s3://BUCKET/OBJECT Id
列出分段上传s3cmd listmp s3://BUCKET/OBJECT Id
打开/关闭Bucket的access loggings3cmd accesslog s3://BUCKET
使用secret key生成签名s3cmd sign STRING-TO-SIGN
若
secret key
为"sfdserqwovbnxz2dsc"
s3cmd sign sfdserqwovbnxz2dsc
得到:Signature: G3GtIkpMWFiyd/FLVvZ2z76xC20=
s3cmd signurl s3://BUCKET/OBJECT
生成1小时后过期的带有签名的url:
s3cmd signurl s3://test_bucket01/example.jpg +3600
得到:http://test_bucket01.ceph40:7480/example.jpg?AWSAccessKeyId=ENECX2I210OUE60CE3LF&Expires=1471258746&Signature=AOHcWQlu0tFPJCKqsE6DUmF8sRU%3D
生成24小时后过期的带有签名的url:
在未来的时间节点1471344144
后过期:s3cmd signurl s3://test_bucket01/example.jpg 1471344144
得到:http://test_bucket01.ceph40:7480/example.jpg?AWSAccessKeyId=ENECX2I210OUE60CE3LF&Expires=1471344144&Signature=4%2FTlQiqvcPu8tfgCjVwjR%2BdwLDI%3D
修复Bucket中无效的文件名s3cmd fixbucket s3://BUCKET[/PREFIX]
创建Bucket Websites3cmd ws-create s3://BUCKET
删除Bucket Websites3cmd ws-delete s3://BUCKET
列出Bucket Website信息s3cmd ws-info s3://BUCKET
设置或删除Bucket过期规则s3cmd expire s3://BUCKET
上传Bucket的生命周期策略s3cmd setlifecycle FILE s3://BUCKET
移除Bucket的生命周期策略s3cmd dellifecycle s3://BUCKET
-h, -help
:查找帮助--configure
:配置工具-c FILE, --config=FILE
:配置文件名,默认为$HOME/.s3cfg
--dump-config
:解析配置文件后转换为当前的配置--access_key=ACCESS_KEY
,--secret_key=SECRET_KEY
:设置Access Key和Secret Key-e, --encrypt
:在上传前加密文件--no-encrypt
:不加密文件-f, --force
:强制覆盖和其他危险性操作--continue
:继续获取分段下载文件(只适用于get
操作)--continue-put
:继续上传部分分段上传文件或分段上传部分--upload-id=UPLOAD_ID
:当你想继续现有的上传,而使用的分段上传的UploadId
,可以使用s3cmd multipart [URI]
命令查看UploadId
--skip-existing
:跳过目的地址已经存在的文件(只适用于get
,sync
操作)-r, --recursive
:回归上传,下载或者移除。--check-md5
:用于同步文件,比较文件时检验MD5值,默认开启。--no-check-md5
:同步文件,关闭 MD5检验,只进行大小比较,加快了转化速度,但是可能失去一些更改的文件。-P, --acl-public
:允许资源匿名下载(对于Object),列表(对于Bucket)--acl-private
:允许拥有者拥有对象的所有权限(默认)--acl-grant=PERMISSION:EMAIL or USER_CANONICAL_ID
:通过账户的邮箱或者user ID授予资源的权限,权限包含read, write, read_acp, write_acp, full_control
对
admin
账户授予对my_bucket01
资源full_control
权限s3cmd setacl s3://my_bucket01 --acl-grant=full_control:admin
--acl-revoke=PERMISSION:USER_CANONICAL_ID
:取消账户的权限,权限包含read, write, read_acp, wirte_acp
,用法同选项18-D NUM, --restore-days=NUM
:存储文件可用的时长(单位:天),只能与restore
命令一起使用--delete-removed
:删除远程文件,并不与本地文件关联,与sync
联用--no-delete-removed
:不删除远程对象--delete-after
:有新资源上传后删除与sync
联用--max-delete=NUM
:删除不超过NUM个文件与del
和sync
联用--add-destination=ADDITIONAL_DESTINATIONS
:用于并发上传的其他地址--delete-after-fetch
:在获取远程对象后,将远程对象删除,与get, sync
联用-p, --preserve
:保留文件系统属性(模式,所有权,时间戳),sync
命令默认包含此命令--no-preserve
:不保留文件系统属性--exclude=GLOB
:文件名和匹配GLOB路径将同步被排除--exclude-from=FILE
:从FILE
中读取用于排除的GLOBs
--rexclude=REGEXP
:在sync
时,通过正则表达式排除文件名和路径--rexclude-from=FILE
:从FILE
中读取用于排除的正则表达式--include=GLOB
:即便先前已经排除被排除了,也能通过匹配的GLOB的文件名和路径包含进来--include-from=FILE
:通过读取FILE
的方式获取用于包含的GLOBs
--rinclude=REGEXP
:通过正则表达式获取包含的内容--rinclude-from=FILE
:通过读取FILE
获取用于包含的正则表达式--files-from=FILE
:从FILE
读取源文件名的列表--region=REGION, --bucket-location=REGION
:设置创建Bucket的区域--reduced-redundancy, --rr
:存储对象设置存储类型为低冗余存储,与put, cp, mv
联用--no-reduced-redundancy, --no-rr
:存储对象设置为非低冗余存储,与put, cp, mv
联用--storage-class=CLASS
:设置对象的存储类型(STANDARD, STANDARD_IA, 或 REDUCED_REDUNDANCY
),与put, cp, mv
联用--access-logging-target-prefix=LOG_TARGET_PREFIX
:访问日志的目标前缀为S3 URI:http://acs.amazonaws.com/groups/s3/LogDelivery
,与cfmodify, accesslog
命令联用--no-access-logging
:关闭访问日志,与cfmodify, accesslog
命令联用--default-mime-type=DEFAULT_MIME_TYPE
:存储对象默认是MIME
类型,应用默认是binary/octet-stream
类型-M, --guess-mime-type
:通过文件扩展名猜测文件的MIME类型--no-guess-mime-type
:使用文件的默认类型--no-mime-magic
:不使用mime magic
来猜测MIME
类型-m MIME/TYPE, --mime-type=MIME/TYPE
:强制使用设置的MIME类型,覆盖--default-mime-type
和--guess-mime-type
类型--add-header=NAME:VALUE
:增加HTTP
头请求,可以使用多次。比如,使用这个选项可以设置Expires
或者Cache-Control
头(或者两者都可以)--remove-header=NAME
:移除已有的HTTP
头--server-side-encryption
:上传对象时,采用服务端加密,与put, sync, cp, modify
联用--server-side-encryption-kms-id=KMS_KEY
:上传对象时,指定 key id
给服务端,服务端通过KWS
进行加密,与put, sync, cp, modify
联用--encoding=ENCODING
:覆盖自动检测终端和文件系统编码(字符集),自动检测终端:UTF-8--disable-multipart
:取消文件大小比--multipart-chunk-size-mb
大的分段上传,即取消分段上传--multipart-chunk-size-mb=SIZE
:分段上传块的大小,大于SIZE
(单位:M)的部分会自动采用多线程上传,默认大小是15MB
,块大小:最小5MB
,最大5GB
--list-md5
:在Bucket列表中包含MD5
校验,只适用于ls
命令-H, --human-readable-sizes
:打印出可读的形式(例如,1234
显示为1kB
)--ws-index=WEBSITE_INDEX
:index-document
的名称,只适用于ws-create
命令--ws-error=WEBSITE_ERROR
:error-document
的名称,只适用于ws-create
命令--expiry-date=EXPIRY_DATE
:标示到期规则何时生效,与expire
联用--expiry-days=EXPIRY_DAYS
:标示对象创建后,到期规则生效的天数--expiry-prefix=EXPIRY_PREFIX
:用来指定一个或多个对象适用该到期规则,只适用于expire
命令--progress
:显示进度表(在TTY上默认显示)--no-progress
:不显示进度(在non-TTY上默认不显示)--enable
:启用已有的CloudFront
,只适用于cfmodify
命令--disable
:关闭已有的CloudFront
,只适用于cfmodify
命令--cf-invalidate
:上传文件CloudFront
服务不可用--cf-invalidate-default-index
:当使用自定义的原始文件和S3的静态网站,默认的index文件无效。--cf-no-invalidate-default-index-root
:当使用自定义的原始文件和S3的静态网站,默认的index文件路径仍然生效。--cf-add-cname=CNAME
:增加已有的CNAME
到CloudFront
,只适用于cfcreate, cfmodify
命令--cf-remove-cname=CNAME
:从CloudFront
移除CNAME
,只适用于cfmodify
命令--cf-comment=COMMENT
:对于一个给定的CloudFront
设置评论--cf-default-root-object=DEFAULT_ROOT_OBJECT
:当URL中为指定对象时,设置默认的root对象用于返回。使用相关路径。比如,用default/index.html
代替/default/index.html
或者s3://bucket/default/index.html
,只适用于cfcreate, cfmodify
命令-v, --verbose
:输出启用显示详细信息-d, --debug
:启用调试输出,会列出调试信息--version
:显示s3cmd版本信息-F, --follow-symlinks
:当他们是规则文件时,跟踪链接--cache-file=FILE
:包含本地源的MD5值缓存文件-q, --quiet
:是标准输出时,不输出信息--ca-certs=CA_CERTS_FILE
:SSL CA证书的路径--check-certificate
:查看SSL证书是否有效--no-check-certificate
:不检查SSL证书的有效性--check-hostname
:查看SSL证书的hostname
是否有效--no-check-hostname
:不检查SSL证书的hostname
的有效性--signature-v2
:使用AWS签名版本2代替最新的签名版本--limit-rate=LIMITRATE
:限制上传或者下载速度(单位:bytes/s),支持k, m
后缀--requester-pays
:对于操作 ,设置申请方付款标志-l, --long-listing
:产生长列表,与ls
联用--stop-on-error
:如果在传输中出现错误,则停止传输--content-disposition=CONTENT_DISPOSITION
:为签名的URL提供Content-Disposition
,例如,"inline; filename=myvideo.mp4"
--content-type=CONTENT_TYPE
:为签名的URL提供Content-Type
,例如,"video/mp4"
-n, --dry-run
:只显示应该怎样上传或下载,但实际上并没有做。仍可以进行S3请求得到Bucket列表等信息,只适用于文件传输命令-s, --ssl
:使用HTTPS
连接S3--no-ssl
:不使用HTTPS
连接S3