简单方便使用和管理对象存储服务---s3cmd

举报
samuel_lui 发表于 2017/09/11 15:52:52 2017/09/11
【摘要】 s3cmd 是用于创建S3桶,上传,检索和管理数据到对象存储命令行实用程序。 本文将指导linux下安装s3cmd程序,以及对象存储服务桶和对象数据管理,包括创建桶、上传、检索、删除及本地与对象存储服务间数据同步等。本文以下内容将以CentOS 7.3的弹性云服务器为例,windows操作系统使用类似。

s3cmd 是用于创建S3桶,上传,检索和管理数据到对象存储命令行实用程序。

本文将指导linux下安装s3cmd程序,以及对象存储服务桶和对象数据管理,包括创建桶、上传、检索、删除及本地与对象存储服务间数据同步等。本文以下内容将以CentOS 7.3的弹性云服务器为例,windows操作系统使用类似。

·         安装s3cmd

安装setuptools:

[root@ecs ~]# yum install python-setuptools

安装wget:

[root@ecs ~]# yum install wget

获取s75pxd软件包:

[root@ecs ~]# wget https://github.com/s3tools/s3cmd/archive/master.zip

[root@ecs ~]# mv master.zip s3cmd-master.zip

安装s3cmd:

[root@ecs ~]# unzip s3cmd-master.zip

[root@ecs ~]# cd s3cmd-master

[root@ecs ~]# python setup.py install

 

·         配置s3cmd

[root@ecs ~]# s3cmd --configure

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. Leave them empty for using the env variables.

Access Key: ***************

Secret Key: **************************************

Default Region [US]: cn-north-1

Use "s3.amazonaws.com" for S3 Endpoint and not modify it to the target Amazon S3.

S3 Endpoint [s3.amazonaws.com]: obs.myhwclouds.com

Use "%(bucket)s.s3.amazonaws.com" to the target Amazon S3. "%(bucket)s" and "%(location)s" vars can be used

if the target S3 system supports dns based buckets.

DNS-style bucket+hostname:port template for accessing a bucket [%(bucket)s.s3.amazonaws.com]: %(bucket)s.obs.myhwclouds.com  

Encryption password is used to protect your files from reading

by unauthorized persons while in transfer to S3

Encryption password: ********    

Path to GPG program [/usr/bin/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 only be proxied with Python 2.7 or newer

Use HTTPS protocol [Yes]: yes

On some networks all internet access must go through a HTTP proxy.

Try setting it here if you can't connect to S3 directly

HTTP Proxy server name:

New settings:

  Access Key: ***************

  Secret Key: **************************************

  Default Region: cn-north-1

  S3 Endpoint: obs.myhwclouds.com

  DNS-style bucket+hostname:port template for accessing a bucket: %(bucket)s.obs.myhwclouds.com

  Encryption password: ********

  Path to GPG program: /usr/bin/gpg

  Use HTTPS protocol: True

  HTTP Proxy server name: 

  HTTP Proxy server port: 0

Test access with supplied credentials? [Y/n] y

Please wait, attempting to list all buckets...

Success. Your access key and secret key worked fine :-)

Now verifying that encryption works...

Success. Encryption and decryption worked fine :-)

Save settings? [y/N] y

Configuration saved to '/root/.s3cfg'

--s3cmd会在用户home目录下生成".s3cfg"配置文件,后续修改也可直接修改.s3cfg配置文件中参数值

·         使用s75pxd命令

s3cmd配置完成后,即可使用命令管理对象存储服务

1.列出全部存储桶

使用以下命令列出在您的对象存储服务中的所有桶。

[root@ecs ~]# s3cmd ls

2.创建新桶

要在对象存储服务中创建新桶,如创建为mybucket桶。

[root@ecs ~]# s3cmd mb s3://mybucket

3. 上传文件到S3

以下命令将使用s3cmd命令上传文件test.txt的到mybucket桶。

[root@ecs ~]# s3cmd put test.txt s3://mybucket/

4.上传文件夹到s3

如果我们需要上传整个目录使用-r递归上传,像下面这样。

[root@ecs ~]# s3cmd put -r backup s3://mybucket/

如果上次目录结尾带有‘/’ (如:backup/),将只上传备份目录中的内容,不包含根文件夹。

[root@ecs ~]# s3cmd put -r backup/ s3://mybucket/

5.列出桶中存储数据

使用ls列举桶中的对象。

[root@ecs ~]# s3cmd ls s3://mybucket/

6.从对象存储桶中下载文件

如果我们需要从桶中下载文件,使用下面的命令来下载。

[root@ecs ~]# s3cmd get s3://mybucket/test.txt

7.删除存储桶的数据

要删除桶中的文件或者文件夹都是使用下面的命令。

[root@ecs ~]# s3cmd del s3://mybucket/test.txt

[root@ecs ~]# s3cmd del s3://mybucket/backup

8.删除桶

如果删除不需要的桶,可使用以下命令(删除时确保桶中无对象,否则删除失败)

[root@ecs ~]# s3cmd rb s3://mybucket

9.同步本地目录或文件到对象存储桶

如果想把本地目录(/home/mydir)同步到对象存储桶中(s3://mybucket/mydir),只需执行以下一条命令即可同步所有文件:

[root@ecs ~]# s3cmd sync /home/mydir/ s3://mybucket/mydir/

注意:不要忘了添加具有完整的目录路径指定S3存储桶时,尾随本地目录路径斜杠(/)。

为了保持保留文件属性,如日期/时间等使用 -p -preserve 参数,如下图所示

[root@ecs ~]# s3cmd sync /home/mydir/ --preserve s3://mybucket/mydir/

如果我们要同步源使用 –skip-existing 参数仅新创建的文件。它会跳过已经存在的目的地或者其修改源的所有文件。

[root@ecs ~]# s3cmd sync /home/mydir/ --skip-existing s3://mybucket/mydir/

如果你想删除从S3桶已经从本地使用 –delete-removed 参数删除所有文件。

[root@ecs ~]# s3cmd sync /home/mydir/ --delete-removed s3://mybucket/mydir/

10.同步对象存储桶中对象到本地目录

如果想把对象存储桶中(s3://mybucket/mydir)所有对象同步到本地目录(/home/mydir),只需执行以下一条命令即可同步所有文件:

[root@ecs ~]# s3cmd sync s3://mybucket/mydir/ /home/mydir/

当然也可以为以下从对象存储桶文件同步到本地目录中使用-preserve–skip-existing –delete-removed参数。

[root@ecs ~]# s3cmd sync s3://mybucket/mydir/ --preserve  /home/mydir/

[root@ecs ~]# s3cmd sync s3://mybucket/mydir/ --skip-existing /home/mydir/

[root@ecs ~]# s3cmd sync s3://mybucket/mydir/ --delete-removed /home/mydir/

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。