#s3cmd 是用于创建S3桶,上传,检索和管理数据到对象存储命令行实用程序。 通常用于对象存储服务桶和对象数据管理,包括创建桶、上传、检索、删除及本地与对象存储服务间数据同步等。
一、安装
yum install s3cmd
apt-get install s3cmd
二、使用
1. 配置方法
- 更改
$HOME/.s3cfg配置文件 s3cmd --configures3cmd -c FILEFILE为已完成配置的文件
推荐更改项:
access_key = <your access key id>secret_key = <your access key secret>host_base = host:porthost_bucket = %(bucket)s.hostuse_https = False #Default is True
2. 操作
- 创建Bucket,且Bucket名称是唯一的。
s3cmd mb s3://BUCKET
s3cmd mb s3://my_bucket_name
- 删除空Bucket
s3cmd rb s3://BUCKET
s3cmd rb s3://my_bucket_name
- 列举Object或Bucket
s3cmd ls [s3://BUCKET[/PREFIX]]
s3cmd ls s3://my_bucket_names3cmd ls s3://my_bucket_name/file.txt
-
列举所有Buckets
s3cmd ls -
上传Object到某个Bucket
s3cmd 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联用取消分段上传
- 从Bucket下载Object
s3cmd get s3://BUCKET/OBJECT LOCAL_FILE
下载单个文件
s3cmd get s3://my_bucket_name/file.txt file.txt
批量下载(下载到当前目录)s3cmd get s3://my-bucket-name/* ./
- 删除Object
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.txtrm是del的别名
- 从Glacier存储类中恢复文件
s3cmd restore s3://BUCKET/OBJECT
s3cmd restore s3://my_bucket_name/file.txt
- 同步目录树(同步操作是要进行MD5校验的,只有当文件不同时,才会被传输)
s3cmd sync LOCAL_DIR s3://BUCKET[/PREFIX]或s3://BUCKET[/PREFIX] LOCAL_DIR
同步当前目录下的所有文件:
s3cmd sync ./ s3://my_bucket_name/
- 获取对应的Bucket所占用的空间大小
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/
- 获取Bucket或Object的版本信息
s3cmd info s3://BUCKET[/OBJECT]
s3cmd info s3://my_bucket_names3cmd info s3://my_bucket_name/file.txt
- 复制Object(从BUCKET1/OBJECT1复制到BUCKET2[/OBJECT2])
s3cmd cp s3://BUCKET1/OBJECT1 s3://BUCKET2[/OBJECT2]
s3cmd cp s3://my_bucket_name1/file1.txt s3://my_bucket_name2/file2.txt
- 修改Object元数据
s3cmd modify s3://BUCKET1/OBJECT
修改example.jpg的
--mime-type为imge/jpegs3cmd modify --mime-type="image/jpeg" s3://my_bucket01/example.jpg
- 移动Object
s3cmd mv s3://BUCKET1/OBJECT1 s3://BUCKET2[/OBJECT2]
s3cmd mv s3://my_bucket_name1/file1.txt s3://my_bucket_name2/file2.txt
- 修改Bucket或对象的ACL
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
- 修改Bucket策略
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 CORS
s3cmd setcors FILE s3://BUCKET -
删除Bucket CORS
s3cmd 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 logging
s3cmd accesslog s3://BUCKET -
使用secret key生成签名
s3cmd sign STRING-TO-SIGN
若
secret key为"sfdserqwovbnxz2dsc"s3cmd sign sfdserqwovbnxz2dsc得到:Signature: G3GtIkpMWFiyd/FLVvZ2z76xC20=
- 提供有时间期限的公共访问S3的URL
s3cmd signurl s3://BUCKET/OBJECT <expiry_epoch|+expiry_offset>
生成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 Website
s3cmd ws-create s3://BUCKET -
删除Bucket Website
s3cmd 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
3. 选项
-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
S3cmd实用教程
本文介绍S3cmd的安装与使用方法,涵盖配置、基本操作、高级功能等,助力高效管理对象存储。
9894

被折叠的 条评论
为什么被折叠?



