Amazon S3 是Amazon網落服務(Amazon Web Services,AWS)提供的雲存儲。Amazon S3在眾多第三方已經開發完成的商業服務或客戶端軟件之上,發布了一組網絡服務接口。本教程描述怎樣用Linux命令行訪問Amazon S3雲存儲。
最著名的Amazon S3命令行客戶端是用python寫的s3cmd。作為一個簡單的AWS S3命令行工具,s3cmd的思想是用於運行腳本化的cron任務,比如每天的備份工作。
在Linux上安裝s3cmd
在Ubuntu或者Debian上安裝s3cm
- ___FCKpd___0nbsp;sudo apt-get install s3cmd
在Fedora上安裝s3cmd
- ___FCKpd___1nbsp;sudo yum install s3cmd
在CentOS或者RHEL上安裝s3cm
- ___FCKpd___2nbsp;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,用以下命令:
- ___FCKpd___3nbsp;sudo rpm -ivh s3cmd-1.0.0-4.1.x86_64.rpm
配置s3cmd
第一次運行s3cmd需要運行下面的命令做配置:
- ___FCKpd___4nbsp;s3cmd –configure
它將會問你一系列問題:
配置將以保存普通文本格式保存在 ~/.s3cfg.
s3cmd的基本用法
在你的賬戶中列出所有現有的bucket:
- ___FCKpd___5nbsp;s3cmd ls
- 2011-05-28 22:30 s3://mybucket1
- 2011-05-29 00:14 s3://mybucket2
建立新的bucket:
- ___FCKpd___6nbsp;s3cmd mb s3://dev99
- Bucket ’s3://dev99/’ created
上傳文件到現有的bucket:
- ___FCKpd___7nbsp;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
上傳文件的默認訪問權限是私有的(private),就是只有你自己可以訪問,使用正確的訪問和安全密碼即可。
上傳公開訪問權限的文件到現有bucket:
- ___FCKpd___8nbsp;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
如果上傳的文件授予公開訪問權限,任何人在浏覽器中都可以通過http://dev99.s3.amazonaws.com/4.png 訪問。
查看一個現有bucket的內容:
- ___FCKpd___9nbsp;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
下載現有bucket包含的文件(例如所有的.png文件):
- ___FCKpd___10nbsp;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
刪除現有bucket中的文件:
- ___FCKpd___11nbsp;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
獲取現有bucket的信息,包括存儲位置和訪問控制列表(ACL):
- ___FCKpd___12nbsp;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
在上傳到現有的bucket之前,加密文件:
- ___FCKpd___13nbsp;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
當用s3cmd下載一個加密過的文件時,它會自動檢測加密並在下載過程解密,因此下載和訪問加密文件時,就像通常所做的一樣:
- ___FCKpd___14nbsp;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
刪除現有的bucket:
- ___FCKpd___15nbsp;s3cmd rb s3://dev99
- Bucket ’s3://dev99/’ removed
注意,你不能刪除一個非空的bucket。