linux下的S3客户端工具

S3是在线服务,默认的基于web的客户端对于一般应用已经足够强大,也许对于朋友来说也许未然,例如希望脱离浏览器使用单独的桌面客户端管理工具,,又或者使用命令行和其他script进行整合操作的需求等等。

这里简单说一下在linux底下可以使用的两款客户端工具,dragonDisk 和 S3cmd。

 

DragonDisk

下载地址: http://www.dragondisk.com/

实际上,DragonDisk不仅仅是一款S3的管理工具,它还能用来管理其他的在线存储服务,例如Google 云存储和Cloudian等。你可以通过这个工具备份,共享和组织你的远程资源,界面看着象windows下的explore和total commander,因此非常的方便易用。而且DragonDisk是一款自由软件,没有开源,你可以在他们的Licence范围内随意的使用。同时,它还是一款跨平台的软件,支持的系统包括Windos, Linux和Mac OS X,在linux下,还发布RPM格式和DEB格式的封包。

DragonDisk其实还有一个姊妹产品dgsync,这是一个命令行的DragonDisk,我没试用过,如果想把桌面工具和命令行工具统一起来的朋友,可以试用试用。

安装

# 请选择适合自己系统的版本下载, 我的是ub10.04 64位,因此下载

wget http://download.dragondisk.com/dragondisk_1.0.0-0ubuntu_amd64.deb
dpkg -i dragondisk_1.0.0-0ubuntu_amd64.deb

安装好后 internat > DragonDisk可以启动,默认界面如下

配置

接下来要把你的aws帐号信息配置进来。当然,不需要提供明文内容,注册完aws帐号后,系统已经为你自动生成了一对密文帐号/密码对。下面请访问aws.amazon.com,登录后进入”Security Credentials”页面,如下:

进入后,找到Access Credentials标题,把其中的Access Key ID和Secret Access Key复制下来

  1. 复制Access Key,这可以比作帐号名
  2. 点击show
  3. 复制弹出框的Secret Access Key,可以比作密码

回到DragonDisk的客户端,选择File > Accounts… 项

选择New进行新建

  1. 使用Amazon S3的话,默认即可
  2. 自定义一个本地帐号名,方便自己记忆
  3. 注释
  4. 填入刚刚copy下来的Access Key
  5. 填入刚刚copy的Secret Access Key
  6. 保存

现在回到DragonDisk主界面,拉开右边“Root”那个下拉框,可以看到一个带有S3小图标的项目“sunnyplay”了吧!选择它,即可立刻连接到S3的服务器,进行远程操作,进行添加/删除桶、添加/删除文件夹和下载文件等等。

剩下的,就不用再说了吧,就是和操作total commander一样。如果你想上传文件,在左边那个“Root”下选好你的分区,然后选择好相应的文件,拖拉到右边的S3网络空间,即可。下载亦然,倒过来拖拉即可。如果你想对某份文件或目录设置权限,可以使用右键,选择properties既可以看到。

这款工具很方便,基本不用学习就能上手。支持多个S3帐号,而跨平台的特性是最好让我选择它的原因。

 

S3cmd

下载页面: http://s3tools.org/download

如果在debian/ubuntu环境下,可以使用apt的方式安装。新版本的debian/ubuntu已经收录了S3cmd。我本人是使用github的方式安装

git clone git://github.com/s3tools/s3cmd.git

配置

为S3cmd配置S3的帐号信息,在终端输入 s3cmd –configure 指令

$ s3cmd --configure       # 交互式提示,让你输入你的Access Key和Secret Key,以及一些安全设置

Enter new values or accept defaults in brackets with Enter.
Refer to user manual for detailed description of all options.

Access key and Secret key are your identifiers for Amazon S3
Access Key: 这里输入你的Key
Secret Key: 这里是密码

Encryption password is used to protect your files from reading
by unauthorized persons while in transfer to S3
Encryption password: 如果需要GPG加密你的key信息,请输入密码
Path to GPG program [/usr/bin/gpg]: GPG工具的路径

When using secure HTTPS protocol all communication with Amazon S3
servers is protected from 3rd party eavesdropping. This method is
slower than plain HTTP and can't be used if you're behind a proxy
Use HTTPS protocol [No]: 不需要https则回车

On some networks all internet access must go through a HTTP proxy.
Try setting it here if you can't conect to S3 directly
HTTP Proxy server name: 不需要http代理则回车

如果成功,会出现下面的提示。配置信息会存储在~/.s3cfg

Success. Your access key and secret key worked fine  
Save settings? [y/N] y
Configuration saved to '~/.s3cfg'

使用

s3cmd命令中,定义了一个访问对象的路径方式,很简单,是一种类似URL的寻址方式,型如 s3://BUCKET/OBJECT。不管你是要创建桶或目录,或是列出对象,都需要遵循。

 

S3的基本命令

s3cmd mb s3://BUCKET
      创建桶

s3cmd rb s3://BUCKET
      删除桶

s3cmd ls [s3://BUCKET[/PREFIX]]
      列出对象或桶

s3cmd la
      列出所有桶中的所有对象

s3cmd put FILE [FILE...] s3://BUCKET[/PREFIX]
      把文件(s)上传到桶

s3cmd get s3://BUCKET/OBJECT  LOCAL_FILE
      从桶中下载某个文件到本地

s3cmd del s3://BUCKET/OBJECT
      删除桶中的某个文件

s3cmd  sync  LOCAL_DIR  s3://BUCKET[/PREFIX]  or
s3cmd  sync  s3://BUCKET[/PREFIX] LOCAL_DIR
      同步本地目录和桶中的目录

s3cmd du [s3://BUCKET[/PREFIX]]
      统计某个桶中的空间占用量

s3cmd info s3://BUCKET[/OBJECT]
      返回某个桶或对象的描述信息

s3cmd cp s3://BUCKET1/OBJECT1 s3://BUCKET2[/OBJECT2]
      复制对象

s3cmd mv s3://BUCKET1/OBJECT1 s3://BUCKET2[/OBJECT2]
      移动对象

s3cmd setacl [--acl-private | --acl-public] s3://BUCKET[/OBJECT]
      为某个桶或对象设置访问权限 

s3cmd accesslog s3://BUCKET
      打开/禁用桶的访问日志记录 

s3cmd sign STRING-TO-SIGN
      Sign arbitrary string using the secret key

s3cmd fixbucket s3://BUCKET[/PREFIX]
      修改桶中不可用的文件名

 

列出帐号

信息如果是新建的帐号,返回为空

$ s3cmd ls
2012-05-06 09:05  s3://bu.0506
2012-05-06 10:55  s3://sunnyplay

$ s3cmd ls s3://bu.0506/
2012-05-06 09:06         1550   s3://bu.0506/vim.txt

创建一个新桶

桶的名字只能使用字母数字、点“.”以及中划线“-”

$ s3cmd mb s3://SP-project1 Bucket 's3://SP-project1/' created 

上传文件到桶

$ s3cmd put NEWS.txt LICENSE.txt s3://SP-project1
LICENSE -> s3://SP-project1/LICENSE.txt  [1 of 2]
 18092 of 18092   100% in    1s    16.14 kB/s  done
NEWS -> s3://SP-project1/NEWS.txt  [2 of 2]
 7651 of 7651   100% in    0s    10.98 kB/s  done

$ s3cmd ls s3://SP-project1
2012-05-14 11:18     18092   s3://SP-project1/LICENSE.txt
2012-05-14 11:18      7651   s3://SP-project1/NEWS.txt

设置访问权限

默认的这个桶,只有你才能访问到,不过你可以通过设置acl,把这个文件开放给所有人看/下载:

$ s3cmd setacl --acl-public s3://SP-project1/NEWS.txt
s3://SP-project1/NEWS.txt: ACL set to Public  [1 of 1]

# 作为选择,你也可以上传时设置
$ s3cmd put --acl-public --guess-mime-type NEWS.txt s3://SP-project1/NEWS.txt

别人只需要输入

http://s3.amazonaws.com/SP-project1/NEWS.txt

就可以访问/下载这个文件

 

删除对象和桶

$ s3cmd del s3://SP-project1/LICENSE.txt s3://SP-project1/NEWS.txt
File s3://SP-project1/LICENSE.txt deleted
File s3://SP-project1/NEWS.txt deleted

$ s3cmd rb s3://SP-project1    # rb只能删除空的桶,如果桶不为空,返回ERROR
Bucket 'SP-project1' removed

 

更换操作区域(Region)

# 默认是在us-standard中,使用--bucket-location则可以更换,例如 us-west-1 代表 California

$ s3cmd --bucket-location ls
2012-05-06 10:05  s3://bu.west.05

你可能感兴趣的:(linux下的S3客户端工具)