#s3cmd 是用于創建S3桶,上傳,檢索和管理數據到對象存儲命令行實用程序。 通常用于對象存儲服務桶和對象數據管理,包括創建桶、上傳、檢索、刪除及本地與對象存儲服務間數據同步等。
一、安裝
yum install s3cmd
apt-get install s3cmd
二、使用
1. 配置方法
- 更改$HOME/.s3cfg配置文件
- s3cmd --configure
- s3cmd -c FILEFILE為已完成配置的文件
推薦更改項:
access_key = <your access key id>
secret_key = <your access key secret>
host_base = host:port
host_bucket = %(bucket)s.host
use_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_name
s3cmd 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.txt
rm是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_name
s3cmd 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/jpeg
s3cmd 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使用手册的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。