如何使用Linux命令行訪問Amazon S3云存儲?
Amazon S3 是Amazon網(wǎng)落服務(wù)(Amazon Web Services,AWS)提供的云存儲。Amazon S3在眾多第三方已經(jīng)開發(fā)完成的商業(yè)服務(wù)或客戶端軟件之上,發(fā)布了一組網(wǎng)絡(luò)服務(wù)接口。本教程描述怎樣用Linux命令行訪問Amazon S3云存儲。
***的Amazon S3命令行客戶端是用python寫的s3cmd。作為一個簡單的AWS S3命令行工具,s3cmd的思想是用于運行腳本化的cron任務(wù),比如每天的備份工作。
在Linux上安裝s3cmd
在Ubuntu或者Debian上安裝s3cm
- $ sudo apt-get install s3cmd
在Fedora上安裝s3cmd
- $ sudo yum install s3cmd
在CentOS或者RHEL上安裝s3cm
- $ s3cmd put –acl-public 4.png s3://dev99
- 4.png -> s3://dev99/4.png [1 of 1]
- 30778 of 30778 100% in 8s 3.34 kB/s done
先從官方站點上下載rpm包,然后手工安裝。64位CentOS或RHEL 6,用以下命令:
- $ sudo rpm -ivh s3cmd-1.0.0-4.1.x86_64.rpm
配置s3cmd
***次運行s3cmd需要運行下面的命令做配置:
- $ s3cmd –configure
它將會問你一系列問題:
- AWS S3的訪問密鑰和安全密鑰
- 對AWS S3雙向傳輸?shù)募用苊艽a和加密數(shù)據(jù)
- 為加密數(shù)據(jù)設(shè)定GPG程序的路徑(例如,/usr/bin/gpg)
- 是否使用https協(xié)議
- 如果使用http代理,設(shè)定名字和端口
配置將以保存普通文本格式保存在 ~/.s3cfg.
s3cmd的基本用法
在你的賬戶中列出所有現(xiàn)有的bucket:
- $ s3cmd ls
- 2011-05-28 22:30 s3://mybucket1
- 2011-05-29 00:14 s3://mybucket2
建立新的bucket:
- $ s3cmd mb s3://dev99
- Bucket ’s3://dev99/’ created
上傳文件到現(xiàn)有的bucket:
- $ s3cmd put 1.png 2.png 3.png s3://dev99
- 1.png -> s3://dev99/1.png [1 of 3]
- 26261 of 26261 100% in 5s 4.33 kB/s done
- 2.png -> s3://dev99/2.png [2 of 3]
- 201430 of 201430 100% in 2s 98.05 kB/s done
- 3.png -> s3://dev99/3.png [3 of 3]
- 46630 of 46630 100% in 0s 56.62 kB/s done
上傳文件的默認訪問權(quán)限是私有的(private),就是只有你自己可以訪問,使用正確的訪問和安全密碼即可。
上傳公開訪問權(quán)限的文件到現(xiàn)有bucket:
- $ s3cmd put --acl-public 4.png s3://dev99
- 4.png -> s3://dev99/4.png [1 of 1]
- 30778 of 30778 100% in 8s 3.34 kB/s done
- Public URL of the object is: http://dev99.s3.amazonaws.com/4.png
如果上傳的文件授予公開訪問權(quán)限,任何人在瀏覽器中都可以通過http://dev99.s3.amazonaws.com/4.png 訪問。
查看一個現(xiàn)有bucket的內(nèi)容:
- $ s3cmd ls s3://dev99
- 2013-06-02 02:52 26261 s3://dev99/1.png
- 2013-06-02 02:52 201430 s3://dev99/2.png
- 2013-06-02 02:52 46630 s3://dev99/3.png
- 2013-06-02 02:56 30778 s3://dev99/4.png
下載現(xiàn)有bucket包含的文件(例如所有的.png文件):
- $ s3cmd get s3://dev99/*.png
- s3://dev99/1.png -> ./1.png [1 of 4]
- 26261 of 26261 100% in 0s 39.39 kB/s done
- s3://dev99/2.png -> ./2.png [2 of 4]
- 201430 of 201430 100% in 7s 24.64 kB/s done
- s3://dev99/3.png -> ./3.png [3 of 4]
- 46630 of 46630 100% in 1s 39.34 kB/s done
- s3://dev99/4.png -> ./4.png [4 of 4]
- 30778 of 30778 100% in 0s 97.01 kB/s done
刪除現(xiàn)有bucket中的文件:
- $ s3cmd del s3://dev99/*.png
- File s3://dev99/1.png deleted
- File s3://dev99/2.png deleted
- File s3://dev99/3.png deleted
- File s3://dev99/4.png deleted
獲取現(xiàn)有bucket的信息,包括存儲位置和訪問控制列表(ACL):
- $ s3cmd info s3://dev99
- s3://dev99/ (bucket):
- Location: us-east-1
- ACL: dan.nanni: READ
- ACL: dan.nanni: WRITE
- ACL: dan.nanni: READ_ACP
- ACL: dan.nanni: WRITE_ACP
在上傳到現(xiàn)有的bucket之前,加密文件:
- $ s3cmd -e put encrypt.png s3://dev99
- /tmp/tmpfile-pzT1zV3kLZlxDwqA0kwy -> s3://dev99/encrypt.png [1 of 1]
- 196890 of 196890 100% in 1s 99.51 kB/s done
當(dāng)用s3cmd下載一個加密過的文件時,它會自動檢測加密并在下載過程解密,因此下載和訪問加密文件時,就像通常所做的一樣:
- $ s3cmd get s3://dev99/encrypt.png
- s3://dev99/encrypt.png -> ./encrypt.png [1 of 1]
- 196890 of 196890 100% in 1s 131.29 kB/s done
刪除現(xiàn)有的bucket:
- $ s3cmd rb s3://dev99
- Bucket ’s3://dev99/’ removed
注意,你不能刪除一個非空的bucket。
原文鏈接: Dan Nanni 翻譯: 極客范 - pythagoras