attilax 2014-04-01
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
$ 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
它将会问你一系列问题:
配置将以保存普通文本格式保存在 ~/.s3cfg.
s3cmd的基本用法
在你的账户中列出所有现有的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
上传文件到现有的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
上传文件的默认访问权限是私有的(private),就是只有你自己可以访问,使用正确的访问和安全密码即可。
上传公开访问权限的文件到现有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
如果上传的文件授予公开访问权限,任何人在浏览器中都可以通过http://dev99.s3.amazonaws.com/4.png 访问。
查看一个现有bucket的内容:
$ 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文件):
$ 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中的文件:
$ 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):
$ 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之前,加密文件:
$ 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下载一个加密过的文件时,它会自动检测加密并在下载过程解密,因此下载和访问加密文件时,就像通常所做的一样:
$ 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:
$ s3cmd rb s3://dev99 Bucket ’s3://dev99/’ removed
注意,你不能删除一个非空的bucket。