简单方便使用和管理对象存储服务---s3cmd
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/
- 点赞
- 收藏
- 关注作者
评论(0)