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
它将会问你一系列问题:
- AWS S3的访问密钥和安全密钥
- 对AWS S3双向传输的加密密码和加密数据
- 为加密数据设定GPG程序的路径(例如,/usr/bin/gpg)
- 是否使用https协议
- 如果使用http代理,设定名字和端口
配置将以保存普通文本格式保存在 ~/.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。
原文链接: Dan Nanni 翻译: 极客范 - pythagoras