转载

用Linux中的命令行访问AmazonS3云存储,带来的好处不只安全

【编者的话】

亚马逊简单存储服务(S3)是亚马逊网络服务公司(AWS)提供的云存储服务中一个重要的组成部分,也是用户使用最为广泛的云存储服务。使用AmazonS3的好处很多,其中最大的三个好处就是安全、可靠、价格低廉。就算您是一个 SAN 专家,喜欢维护硬件资产来存储数据内容,它也可能比您做的更好。在本教程中将介绍如何从Linux中的命令行来访问亚马逊S3云存储。

以下为作者原文。

用Linux中的命令行访问AmazonS3云存储,带来的好处不只安全

亚马逊简单存储服务(S3)是亚马逊网络服务公司(AWS)提供的一项云存储服务。亚马逊S3发布了一系列Web服务接口,许多第三方商业服务或客户机软件都是基于这些接口开发而成的。

我在本教程中将介绍如何从Linux中的命令行来访问亚马逊S3云存储。

最流行的亚马逊S3命令行客户软件之一是用python编写的s3cmd(http://s3tools.org/s3cmd)。作为一种简单的AWS S3命令行工具,你想运行诸如每日备份之类的脚本化计划任务时,使用s3cmd再理想不过了。

Linux上安装s3cmd

如果想在Ubuntu或Debian上安装s3cm,运行这个命令:

  1. $ sudo apt-get install s3cmd 

如果想在Fedora上安装s3cmd,运行这个命令:

  1. $ sudo yum install s3cmd 

如果想在CentOS或RHEL上安装s3cm,先从官方网站(http://s3tools.org/repo/RHEL_6/)安装.rpm程序包,然后手动安装。针对64位CentOS或RHEL 6,运行这个命令:

  1. $ sudo rpm -ivh s3cmd- 1.0 . 0 - 4.1 .x86_64.rpm 

配置s3cmd

你第一次运行s3cmd时,需要运行下面这个命令,对它进行配置:

  1. $ s3cmd --configure 

它会向你提出一系列问题:

  • AWS S3的访问密钥和安全密钥
  • 用于与AWS S3之间来回传输的加密数据的加密密码
  • 用于加密数据的GPG程序的路径(比如/usr/bin/gpg)
  • 是否使用HTTPS协议
  • 如果使用HTTPS协议,HTTP代理的名称和端口

然后配置内容将以明文格式保存在~/.s3cfg中。

s3cmd的基本用法

想列出你的AWS S3帐户中所有的现有存储桶(bucket),运行这个命令:

  1. $ s3cmd ls 
  2.  
  3. 2011 - 05 - 28   22 : 30  s3: //mybucket1  
  4.  
  5. 2011 - 05 - 29   00 : 14  s3: //mybucket2  

想创建一个新的存储桶,运行这个命令:

  1. $ s3cmd mb s3: //dev99  
  2.  
  3. Bucket  's3://dev99/'  created 

想把文件上传到一个现有的存储桶,运行这个命令:

  1. $ s3cmd put  1 .png  2 .png  3 .png s3: //dev99  
  2.  
  3. 1 .png -> s3: //dev99/1.png [1 of 3]  
  4.  
  5. 26261  of  26261   100 % in 5s  4.33  kB/s done 
  6.  
  7. 2 .png -> s3: //dev99/2.png [2 of 3]  
  8.  
  9. 201430  of  201430   100 % in 2s  98.05  kB/s done 
  10.  
  11. 3 .png -> s3: //dev99/3.png [3 of 3]  
  12.  
  13. 46630  of  46630   100 % in 0s  56.62  kB/s done 

已上传文件的默认访问权限是“private”(私有),这意味着只有你才可以访问这些文件,不过需使用正确的访问密钥和安全密钥。

想把文件上传到拥有公开访问权限的现有存储桶,运行这个命令:

  1. $ s3cmd put --acl- public   4 .png s3: //dev99  
  2.  
  3. 4 .png -> s3: //dev99/4.png [1 of 1]  
  4.  
  5. 30778  of  30778   100 % in 8s  3.34  kB/s done 
  6.  
  7. Public URL of the object is: http: //dev99.s3.amazonaws.com/4.png  

如果授予公开访问权限,任何人都可以访问已上传文件,只要使用任何Web浏览器访问http://dev99.s3.amazonaws.com/4.png。

想查看现有存储桶里面的的内容,运行这个命令:

  1. $ s3cmd ls s3: //dev99  
  2.  
  3. 2013 - 06 - 02   02 : 52   26261  s3: //dev99/1.png  
  4.  
  5. 2013 - 06 - 02   02 : 52   201430  s3: //dev99/2.png  
  6.  
  7. 2013 - 06 - 02   02 : 52   46630  s3: //dev99/3.png  
  8.  
  9. 2013 - 06 - 02   02 : 56   30778  s3: //dev99/4.png  

想下载现有存储桶里面含有的文件(比如所有的.png文件),运行这个命令:

  1. $ s3cmd get s3: //dev99/*.png  
  2.  
  3. s3: //dev99/1.png -> ./1.png [1 of 4]  
  4.  
  5. 26261  of  26261   100 % in 0s  39.39  kB/s done 
  6.  
  7. s3: //dev99/2.png -> ./2.png [2 of 4]  
  8.  
  9. 201430  of  201430   100 % in 7s  24.64  kB/s done 
  10.  
  11. s3: //dev99/3.png -> ./3.png [3 of 4]  
  12.  
  13. 46630  of  46630   100 % in 1s  39.34  kB/s done 
  14.  
  15. s3: //dev99/4.png -> ./4.png [4 of 4]  
  16.  
  17. 30778  of  30778   100 % in 0s  97.01  kB/s done 

想删除现有存储桶里面的文件,运行这个命令:

  1. $ s3cmd del s3: //dev99/*.png  
  2.  
  3. File s3: //dev99/1.png deleted  
  4.  
  5. File s3: //dev99/2.png deleted  
  6.  
  7. File s3: //dev99/3.png deleted  
  8.  
  9. File s3: //dev99/4.png deleted  

想获得关于现有存储桶的信息,包括存储桶的存储位置和访问控制列表(ACL),运行这个命令:

  1. $ s3cmd info s3: //dev99  
  2.  
  3. s3: //dev99/ (bucket):  
  4.  
  5. Location: us-east- 1  
  6.  
  7. ACL: dan.nanni: READ 
  8.  
  9. ACL: dan.nanni: WRITE 
  10.  
  11. ACL: dan.nanni: READ_ACP 
  12.  
  13. ACL: dan.nanni: WRITE_ACP 

将文件上传到现有存储桶之前对文件进行加密,运行这个命令:

  1. $ s3cmd -e put encrypt.png s3: //dev99  
  2.  
  3. /tmp/tmpfile-pzT1zV3kLZlxDwqA0kwy -> s3: //dev99/encrypt.png [1 of 1]  
  4.  
  5. 196890  of  196890   100 % in 1s  99.51  kB/s done 

用s3cmd下载已加密文件时,它会自动检测有无加密,一旦下载,就对文件实时进行解密。因而,想下载和访问已加密文件,只要像平常那样运行即可:

  1. $ s3cmd get s3: //dev99/encrypt.png  
  2.  
  3. s3: //dev99/encrypt.png -> ./encrypt.png [1 of 1]  
  4.  
  5. 196890  of  196890   100 % in 1s  131.29  kB/s done 

想删除现有的存储桶,运行这个命令:

  1. $ s3cmd rb s3: //dev99  
  2.  
  3. Bucket  's3://dev99/'  removed 

请注意:如果存储桶里面不是空的,就没法删除它。

英文原文链接: http://xmodulo.com/how-to-access-amazon-s3-cloud-storage-from-command-line-in-linux.html

正文到此结束
Loading...