Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何使用 S3CMD 访问 COS 服务

如何使用 S3CMD 访问 COS 服务

原创
作者头像
吴硕卫
发布于 2020-10-25 06:39:24
发布于 2020-10-25 06:39:24
2.8K0
举报

简介

S3cmd 是免费的命令行工具和客户端,用于在 Amazon S3 和其他兼容 S3 协议的对象存储中上传、下载和管理数据。本文主要介绍如何使用 S3cmd 访问 COS 上的文件。

准备工作

  1. 您已注册 腾讯云账号,并且从 访问管理控制台 上获取了腾讯云密钥 SecretID 与 SecretKey。

使用环境

软件依赖

  • Python 2.6+/3+。
  • 最新版本的 pip。

安装及配置

安装 S3cmd

  • 使用 pip 安装(推荐)

pip install s3cmd

安装成功之后,用户可以通过--version命令查看当前的版本信息。

配置参数

S3cmd 工具在使用前需要进行参数配置,默认读取 ~/.s3cfg 作为配置文件,可以直接在命令中指定参数,也可以直接通过程序的交互式命令创建配置文件。

  • 通过 s3cmd --configure 命令来初始化配置信息
代码语言:txt
AI代码解释
复制
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.

//密钥 ID
//例:AChT4ThiXAbpBDEFGhT4ThiXAbp****
Access Key []:

//密钥 Key
//例:WE54wreefvds3462refgwewe****
Secret Key []:

//默认地域
Default Region []:

//这里需要填写COS的地域Endpoint接入地址 cos.<Region>.myqcloud.com
//如cos.ap-beijing.myqcloud.com
Use "s3.amazonaws.com" for S3 Endpoint and not modify it to the target Amazon S3.
S3 Endpoint []:

//COS服务接入地址 : 注意这里有一个 %(bucket)s 参数
//(bucket)s.cos.<region>.myqcloud.com,注意将region替换为您的存储桶所在的地域简称
//例:%"(bucket)s".ap-beijing.myqcloud.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 []:

//是否开启HTTPS
Use HTTPS protocol []:

//保存设置
Save settings? [y/N]
  • 编辑 ~/.s3cfg配置文件

可以直接编辑~/.s3cfg 文件 (在 Windows 环境下,该文件是位于【我的文档】下的一个隐藏文件),该文件初始时不存在,是通过 s3cmd --configure 命令生成,用户也可以手动创建。

配置完成之后的.s3cfg文件内容示例如下所示:

代码语言:txt
AI代码解释
复制
[default]
#密钥 ID
access_key = AChT4ThiXAbpBDEFGhT4ThiXAbp****
#密钥 Key
secret_key = WE54wreefvds3462refgwewe****
#默认地域
bucket_location = US
#Endpoint接入端点
host_base = cos.ap-beijing.myqcloud.com
#COS服务接入地址
host_bucket = %(bucket)s.cos.ap-beijing.myqcloud.com
#是否开启HTTPS
use_https = False

access_token =
add_encoding_exts =
add_headers =
ca_certs_file =
cache_file =
check_ssl_certificate = True
check_ssl_hostname = True
cloudfront_host = cloudfront.amazonaws.com
connection_pooling = True
content_disposition =
content_type =
default_mime_type = binary/octet-stream
delay_updates = False
delete_after = False
delete_after_fetch = False
delete_removed = False
dry_run = False
enable_multipart = True
encrypt = False
expiry_date =
expiry_days =
expiry_prefix =
follow_symlinks = False
force = False
get_continue = False
gpg_command = /usr/bin/gpg
gpg_decrypt = %(gpg_command)s -d --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_encrypt = %(gpg_command)s -c --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_passphrase =
website_endpoint = http://%(bucket)s.s3-website-%(location)s.amazonaws.com/
guess_mime_type = True
human_readable_sizes = False
invalidate_default_index_on_cf = False
invalidate_default_index_root_on_cf = True
invalidate_on_cf = False
kms_key =
limit = -1
limitrate = 0
list_md5 = False
log_target_prefix =
long_listing = False
max_delete = -1
mime_type =
multipart_chunk_size_mb = 15
multipart_max_chunks = 10000
preserve_attrs = True
progress_meter = True
proxy_host =
proxy_port = 0
public_url_use_https = False
put_continue = False
recursive = False
recv_chunk = 65536
reduced_redundancy = False
requester_pays = False
restore_days = 1
restore_priority = Standard
send_chunk = 65536
server_side_encryption = False
signature_v2 = False
signurl_use_https = False
simpledb_host = sdb.amazonaws.com
skip_existing = False
socket_timeout = 300
stats = False
stop_on_error = False
storage_class =
throttle_max = 100
upload_id =
urlencoding_mode = normal
use_http_expect = False
use_mime_magic = True
verbosity = WARNING
website_error =
website_index = index.html

经过如上配置后具体可以操作某一个地域的存储桶。

如有在其它兼容S3的工具中使用COS可以参考:https://cloud.tencent.com/document/product/436/41284

开始使用

下面为您介绍如何使用 s3cmd 完成一个基础操作,例如创建存储桶、查询存储桶列表、上传对象、查询对象列表、下载对象和删除对象。

创建存储桶

注意,该存储桶创建时的地域为配置信息里的默认地域

  • 命令如下:
代码语言:txt
AI代码解释
复制
#命令
s3cmd mb s3://<BucketName-APPID>
#操作示例
s3cmd mb s3://examplebucket-1250000000

删除存储桶

  • 命令如下:
代码语言:txt
AI代码解释
复制
#命令
s3cmd rb s3://<BucketName-APPID>
#操作示例
s3cmd rb s3://examplebucket-1250000000

查询存储桶列表

  • 命令如下:
代码语言:txt
AI代码解释
复制
s3cmd ls

查询对象列表

  • 命令如下:
代码语言:txt
AI代码解释
复制
#命令
s3cmd ls s3://<BucketName-APPID>
#操作示例
s3cmd ls s3://examplebucket-1250000000
#使用--recursive(或-r)列出所有文件:
s3cmd ls s3://examplebucket-1250000000 --recursive

上传文件或文件夹

  • 上传文件命令如下:
代码语言:txt
AI代码解释
复制
#命令
s3cmd put <localpath> s3://<BucketName-APPID>/<cospath>
#操作示例
s3cmd put exampleobject s3://examplebucket-1250000000/exampleobject
  • 上传文件夹命令如下:
代码语言:txt
AI代码解释
复制
#命令
s3cmd put --recursive <localdirpath> s3://<BucketName-APPID>/<cosdirpath>
#操作示例
s3cmd put dir1 s3://examplebucket-1250000000/dir1/ --recursive
s3cmd put dir1 dir2 s3://examplebucket-1250000000/dir1/ --recursive

复制文件或文件夹

  • 复制文件命令如下:
代码语言:txt
AI代码解释
复制
#命令
s3cmd cp s3://<BucketName-APPID>/<srccospath> s3://<BucketName-APPID>/<destcospath>
#操作示例
#复制 examplebucket1-1250000000 存储桶下的 exampleobject 对象到 examplebucket2-1250000000 存储桶的 exampleobject
s3cmd cp s3://examplebucket1-1250000000/exampleobject s3://examplebucket2-1250000000/exampleobject
  • 复制文件夹命令如下:
代码语言:txt
AI代码解释
复制
#命令
s3cmd cp s3://<BucketName-APPID>/<srccosdirpath> s3://<BucketName-APPID>/<destcosdirpath> -r
#操作示例
#复制 examplebucket1-1250000000 存储桶下的 examplefolder 目录到 examplebucket2-1250000000 存储桶的 examplefolder 目录
s3cmd cp s3://examplebucket1-1250000000/examplefolder/ s3://examplebucket2-1250000000/examplefolder/ -r

移动文件或文件夹

  • 移动文件命令如下:
代码语言:txt
AI代码解释
复制
#命令
s3cmd mv s3://<BucketName-APPID>/<srccospath> s3://<BucketName-APPID>/<destcospath>
#操作示例
#移动 examplebucket21-1250000000 存储桶下的 exampleobject 对象到 examplebucket2-1250000000 存储桶的 exampleobject
s3cmd mv s3://examplebucket1-1250000000/exampleobject s3://examplebucket2-1250000000/exampleobject
  • 移动文件夹命令如下:
代码语言:txt
AI代码解释
复制
#命令
s3cmd mv s3://<BucketName-APPID>/<srccosdirpath> s3://<BucketName-APPID>/<destcosdirpath> -r
#操作示例
#移动 examplebucket1-1250000000 存储桶下的 examplefolder 目录到 examplebucket2-1250000000 存储桶的 examplefolder 目录
s3cmd mv s3://examplebucket1-1250000000/examplefolder/ s3://examplebucket2-1250000000/examplefolder/ -r

下载文件

  • 下载文件命令如下:
代码语言:txt
AI代码解释
复制
#命令
s3cmd get s3://<BucketName-APPID>/<cospath> <localpath>
#操作示例
s3cmd put some-file.xml s3://examplebucket-1250000000/exampleobject
  • 暂不支持下载文件夹

删除文件或文件夹

  • 删除文件命令如下:
代码语言:txt
AI代码解释
复制
#命令
s3cmd del s3://<BucketName-APPID>/<cospath>
#操作示例
s3cmd del --recursive s3:s3://examplebucket-1250000000/exampleobject
  • 删除文件夹命令如下:
代码语言:txt
AI代码解释
复制
#命令
s3cmd del --recursive s3://<BucketName-APPID>/<cosdirpath>
#操作示例
s3cmd del --recursive s3:s3://examplebucket-1250000000/dir1/

分块上传文件

  • 命令如下:
代码语言:txt
AI代码解释
复制
#命令
s3cmd put <localpath> s3://<BucketName-APPID>/<cospath>  --multipart-chunk-size-mb=5
#操作示例
s3cmd put exampleobject s3://examplebucket-1250000000/exampleobject --multipart-chunk-size-mb=5

提示 multipart-chunk-size-mb 用来设置分块大小,最小值为 5MB, 最大值为 5GB, 默认值为 15MB。

显示桶内未完成的分块上传

  • 命令如下:
代码语言:txt
AI代码解释
复制
#命令
s3cmd multipart s3://<BucketName-APPID>
#操作示例
s3cmd multipart s3://examplebucket-1250000000

此处会打印出日期、路径以及上传 id

查询分块上传文件碎片

  • 命令如下:
代码语言:txt
AI代码解释
复制
#命令
s3cmd listmp s3://<BucketName-APPID>/<cospath> UploadID
#操作示例
s3cmd listmp s3://examplebucket-1250000000 1586497168ca632296cea7ebe10b43e6c22ab23a067c776d793da1316d8e991aadafd0cebb

提示 1586497168ca632296cea7ebe10b43e6c22ab23a067c776d793da1316d8e991aadafd0cebb 是上传 id,在 s3cmd multipart 中进行查询

清除分块上传文件碎片

  • 命令如下:
代码语言:txt
AI代码解释
复制
#命令
s3cmd abortmp s3://<BucketName-APPID>/<cospath> UploadID
#操作示例
s3cmd abortmp s3://examplebucket-1250000000 1586497168ca632296cea7ebe10b43e6c22ab23a067c776d793da1316d8e991aadafd0cebb

提示

1586497168ca632296cea7ebe10b43e6c22ab23a067c776d793da1316d8e991aadafd0cebb 是上传 id,在 s3cmd multipart 中进行查询

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Android查缺补漏(IPC篇)-- 进程间通讯基础知识热身
本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8479282.html 在Android中进程间通信是比较难的一部分,同时又非常重要,针对进程间通信,博主会用四篇文章来介绍,本篇文章为IPC系列的开篇,主要介绍一些IPC中用到的一些概念、基础等,目的是让读者朋友们在学习IPC之前对一些必要的知识有一个大体的把握。在Android中进程间通讯的方式有很多种,在后续的三篇中会分别介绍每一种方式的实现过程已经各自的优缺点。 IPC是什么? I
codingblock
2018/03/30
6230
Android跨进程通信IPC之4——AndroidIPC基础2
通过 Parcel的writeStrongBinder方法将Binder对象序列化:
隔壁老李头
2018/08/30
1.3K0
Android跨进程通信IPC之4——AndroidIPC基础2
Android跨进程通信IPC之14——其他IPC方式
前面几篇文章,我们介绍了IPC的基础知识和Binder机制,本篇文章主要讲解各种跨进程的通信方式。
隔壁老李头
2018/08/30
1.7K0
Android跨进程通信IPC之14——其他IPC方式
Android 反序列化漏洞攻防史话
Java 在历史上出现过许多反序列化的漏洞,但大部分出自 J2EE 的组件。即便是 FastJSON 这种漏洞,似乎也很少看到在 Android 中被实际的触发和利用。本文即为对历史上曾出现过的 Android Java 反序列化漏洞的分析和研究记录。
evilpan
2023/03/27
1.9K0
Android 反序列化漏洞攻防史话
Android进程间通信(一):基础介绍
进程间通信 即 IPC机制,IPC 全称为 Inter-Process Communication。
103style
2022/12/19
3180
Android开发之漫漫长途 X——Android序列化
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列。该系列引用了《Android开发艺术探索》以及《深入理解Android 卷Ⅰ,Ⅱ,Ⅲ》中的相关知识,另外也借鉴了其他的优质博客,在此向各位大神表示感谢,膜拜!!!另外,本系列文章知识可能需要有一定Android开发基础和项目经验的同学才能更好理解,也就是说该系列文章面向的是Android中高级开发工程师。
LoveWFan
2018/08/07
4020
Android十八章:多进程基础
这一章主要讲述多进程的作用,序列化和反序列化,Serializable和Parcelable
ppjun
2018/09/05
4750
Android技能树 — 多进程相关小结
这次是讲Android存储路径及IO的基本操作。因为我们在开发的时候会经常这种方便的需求。这篇文章的内容我写的可能很少,都没有细写。别吐槽。o( ̄︶ ̄)o
青蛙要fly
2018/08/29
4570
Android技能树 — 多进程相关小结
Android 进阶6:两种序列化方式 Serializable 和 Parcelable
张拭心 shixinzhang
2018/01/05
1.6K0
Android 进阶6:两种序列化方式 Serializable 和 Parcelable
笔记——IPC跨进程通信(九)
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。 (1)线程是进程的一部分 (2)CPU调度的是线程 (3)系统为进程分配资源,不对线程分配资源
木溪bo
2018/12/27
6450
漫谈序列化—使用、原理、问题
说到对象,是一个比较宽泛的概念,简单的说,他就是类的一个实例,有状态和行为,存活在内存中,一旦JVM停止运行,对象的状态也会丢失。
码上积木
2021/02/08
9090
手写 Parcelable 序列化和反序列化的具体过程
binder 和 socket 通信的区别有哪些 : binder 共享内存,Soket需要copy内存 Socket 远程,本地低速(zygote) Serializable 和 Parcelable 之间的区别: (io流,共享内存) Parcelable 序列化和反序列化的具体过程 Parcel.kt package zzw.com.testparcel public class Parcel { companion object { // Used
曾大稳
2018/09/11
8970
Parcel源码上手
Parcel作为Android Binder通信的基础,从源码的角度,了解下parcel的特性,还是很有必要的。
韦东锏
2021/09/29
7450
Android AIDL 跨进程通信
安卓 IPC 跨进程通信有很多种方式,我们可以用 Bundle传递数据,通过 Intent 意图去打电话,在 Uri 里面传递电话号码
萬物並作吾以觀復
2019/08/12
5030
Art of Android Development Reading Notes 2
(1)任何一个操作系统都需要有相应的IPC机制,Linux上可以通过命名通道、共享内存、信号量等来进行进程间通信。 (2)Android系统不仅可以使用Binder机制来实现IPC,还可以使用Socket实现任意两个终端之间的通信。
宅男潇涧
2018/08/01
5230
Art of Android Development Reading Notes 2
支持跨进程单例的一种实现方案
零 烫烫烫烫烫烫 单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。 但这种设计模式有局限:只能在一个进程内生效。但项目开发中又难免会出现开启多个进程的情况。这个时候,原本设计的单例,在整个应用的范围来看,变成了两个单例。两个进程内的单例的内部状态(变量的取值)也就无法同步了,这也是这个问题的核心(单例的行为(方法)在不同进程是一致的,内部状态会影响到行为的结果)。 一 如何解
QQ音乐技术团队
2018/01/30
2.9K0
跨进程通信(socket,binder,handler),Binder ,linkToDeathAIDL,Bundle,使用Socket
(1)IPC是Inter-Process Communication的缩写,含义为进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程。 (2)ANR是Application Not Responding的缩写,即应用无响应。主线程执行大量的耗时操作容易导致ANR现象发生。5s,广播10s (3)在Android中最有特色的进程间通信方式就是Binder了,通过Binder可以轻松地实现进程间通信。 (4)Android还支持Socket,通过Socket也可以实现任意两个终端或者两个进程之间的通信。
zhangjiqun
2024/12/16
5760
跨进程通信(socket,binder,handler),Binder ,linkToDeathAIDL,Bundle,使用Socket
Android 进阶7:进程通信之 AIDL 的使用
张拭心 shixinzhang
2018/01/05
1.2K0
Android 进阶7:进程通信之 AIDL 的使用
Binder进程间通信详解
前言 隔行如隔山,这句话同样适用于任何时候,即时同一个专业,深入下去的话,差别也是巨大的。今天,讲下自己如何学习binder进程间通信的机制的一些见解。开始的时候,只知道 Binder 是个很底层的东西,甚至对于具体是什么用都不是很清楚。 主要是通过两种方式: 看别人写的Binder博文 目的很简单,大概了解Binder是个什么东西,有哪些核心的东西,对于看源码的时候选择性过滤有帮助,最好是看了后画下思维导图总结下或者可以画下流程图。 看Binder源码 对于切入点的话,从最熟悉的客户端入手;选择
用户1148881
2018/05/28
1.3K0
Parcelable与Serializable
由于 Java 的 Serializable 的性能较低,Parcelable 正式在这个背景下产生的,它核心作用就是为了解决 Android 中大量跨进程通信的性能问题。
老马的编程之旅
2022/06/22
1.2K0
推荐阅读
相关推荐
Android查缺补漏(IPC篇)-- 进程间通讯基础知识热身
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档