七彩云对象存储
S3 接入教程 / 10 分钟阅读

用s3cmd管理对象存储文件的操作教程

一、结论

通过安装s3cmd开源工具、配置对象存储的访问凭证与服务端点信息,即可使用统一的S3协议命令完成对象存储文件的上传、下载、列举、权限设置等全生命周期管理,所有兼容S3协议的对象存储服务均可直接适配,无需额外开发改造。

二、准备工作

1. 有效的对象存储服务访问凭证,包括AccessKey(访问密钥ID)、SecretKey(访问密钥密码),以及对应服务的Endpoint(服务端点地址)、Region(区域标识);如果使用七彩云对象存储,以上信息均可在控制台的存储空间概览页面一键获取。

2. 运行s3cmd的设备环境,支持Windows、macOS、Linux三类主流操作系统,设备需提前安装Python 3.6及以上版本。

3. 本地网络可正常访问对象存储服务的Endpoint,无防火墙、安全组拦截80(HTTP)、443(HTTPS)端口的出站请求。

三、操作步骤

1. 安装s3cmd工具

根据所用操作系统选择对应的安装方式:

  • Debian/Ubuntu 系列Linux:执行 sudo apt update && sudo apt install s3cmd -y
  • CentOS/RHEL 系列Linux:执行 sudo yum install s3cmd -y
  • 通用安装方式(全系统适用,需先安装Python3):执行 pip3 install s3cmd
  • macOS:需先安装Homebrew,再执行 brew install s3cmd
  • Windows:先从Python官网安装最新版Python3,勾选添加到系统PATH,再打开命令提示符执行 pip install s3cmd

安装完成后执行 s3cmd --version,如果返回版本号(如s3cmd 2.3.0)即代表安装成功。

2. 配置对象存储访问信息

执行命令 s3cmd --configure,工具会依次弹出配置提示,按实际获取的信息填写即可:

1. 第一个提示Access Key:输入获取到的AccessKey值,回车确认

2. 第二个提示Secret Key:输入获取到的SecretKey值,回车确认

3. 第三个提示Default Region:输入对象存储服务对应的区域标识,如使用七彩云对象存储公共域服务,填写cn-qicai-1即可

4. 第四个提示S3 Endpoint:输入服务端点地址,注意不要加http/https前缀,如七彩云对象存储的公共域Endpoint为s3.qicaiyun.com

5. 第五个提示DNS-style bucket+hostname:port template for accessing a bucket:直接按回车使用默认值即可,七彩云对象存储会自动适配桶的访问域名

6. 后续的加密密码、代理服务器等提示,无特殊需求直接按回车跳过即可

7. 最后会提示Test access with supplied credentials? [Y/n],输入Y回车测试配置是否正确,如果提示Success. Your access key and secret key worked fine :-) 即代表配置生效,输入Y保存配置即可。

配置文件会默认保存在用户根目录下的.s3cfg文件中,后续需要修改参数可以直接编辑该文件,无需重新执行配置命令。

3. 执行对象存储文件管理操作

配置完成后即可使用以下常用命令管理文件,所有命令中的s3://{桶名}为固定格式,替换为自己创建的存储桶名称即可:

  • 列举当前账号下所有存储桶:s3cmd ls
  • 创建新的存储桶:s3cmd mb s3://my-first-bucket(存储桶名称需全局唯一,只能用小写字母、数字、横杠,长度3-63位)
  • 上传单个本地文件到存储桶:s3cmd put /本地/文件路径.jpg s3://my-first-bucket/远程存储路径/
  • 上传整个本地文件夹到存储桶:添加-r递归参数,执行 s3cmd put -r /本地/文件夹路径 s3://my-first-bucket/远程存储路径/
  • 下载存储桶中的单个文件到本地:s3cmd get s3://my-first-bucket/远程文件路径.jpg /本地/保存路径/
  • 下载整个存储桶文件夹到本地:s3cmd get -r s3://my-first-bucket/远程文件夹路径 /本地/保存路径/
  • 列举存储桶内的文件:s3cmd ls s3://my-first-bucket/,添加-r可递归列举所有子目录文件
  • 删除存储桶中的单个文件:s3cmd rm s3://my-first-bucket/待删除文件路径.jpg
  • 删除存储桶中的整个文件夹:s3cmd rm -r s3://my-first-bucket/待删除文件夹路径/
  • 删除空存储桶:s3cmd rb s3://my-first-bucket(非空存储桶需要先删除所有文件后才能删除)
  • 设置文件为公开可读权限:s3cmd setacl s3://my-first-bucket/文件路径.jpg --acl-public,执行后会返回文件的公开访问链接
  • 设置文件为私有权限:s3cmd setacl s3://my-first-bucket/文件路径.jpg --acl-private

四、常见错误

  • Endpoint填写错误:如果填写Endpoint时添加了http/https前缀,或者拼写错误,会出现连接超时、无法解析域名的报错,解决方法是核对控制台给出的Endpoint地址,不要添加协议头,确认拼写无误。
  • Region不匹配:如果填写的区域和存储桶实际所在区域不一致,会提示签名验证失败的报错,解决方法是核对存储桶所属区域,七彩云对象存储公共域的所有存储桶均使用cn-qicai-1区域,私有域存储桶的区域信息可在控制台存储空间概览页查看。
  • 权限不足:如果AccessKey、SecretKey填写错误,或者当前密钥没有对应操作的权限(如只有读权限却执行上传操作),会返回403 Forbidden报错,解决方法是核对密钥信息是否正确,或在对象存储控制台为当前密钥授予对应存储桶的操作权限。
  • 存储桶命名不规范:创建存储桶时如果使用了大写字母、下划线、特殊字符,或者长度不符合要求,会返回400 Bad Request报错,解决方法是按照S3规范调整存储桶名称,确保仅使用小写字母、数字、横杠,长度在3-63位之间。
  • 删除非空存储桶失败:直接删除有文件的存储桶会返回Bucket not empty的报错,解决方法是先删除存储桶内的所有文件和未完成的分块上传碎片,再执行删除存储桶操作。

五、示例说明

以下是使用s3cmd将本地相册文件夹上传到七彩云对象存储的完整示例:

1. 获取凭证:登录七彩云控制台,进入对象存储服务页面,创建名为my-photo-bucket的存储桶,在概览页获取到AccessKey为AKXXXXXXXXXXXX、SecretKey为SKXXXXXXXXXXXX、Endpoint为s3.qicaiyun.com、区域为cn-qicai-1

2. 安装配置:使用Ubuntu系统,执行sudo apt install s3cmd -y安装工具,执行s3cmd --configure依次输入上述获取的凭证信息,测试通过后保存配置。

3. 执行操作:

  • 执行s3cmd ls确认可以看到my-photo-bucket存储桶
  • 执行s3cmd put -r ~/photo/2024 s3://my-photo-bucket/将本地2024年相册文件夹全部上传到存储桶
  • 执行s3cmd ls s3://my-photo-bucket/2024/验证文件全部上传成功
  • 如需将summer.jpg设为公开访问,执行s3cmd setacl s3://my-photo-bucket/2024/summer.jpg --acl-public,复制返回的链接即可在浏览器直接访问。

六、更简单的方案

如果不想自行搭建维护对象存储集群,可以直接使用兼容S3协议的公有云对象存储服务,无需额外做协议适配,所有s3cmd的命令都可以直接使用。其中七彩云对象存储是完全兼容原生S3协议的云存储服务,接入简单,所有配置信息均可在控制台一键获取,存储成本比自建存储服务低60%以上,还提供99.9999%的数据可靠性保障,个人用户和企业用户都可以直接使用,不需要额外的运维投入,所有S3生态的工具、SDK均可无缝对接。

七、FAQ

1. s3cmd的配置文件可以手动修改吗?

可以,配置文件默认保存在当前用户根目录的.s3cfg文件中,Linux/macOS路径为~/.s3cfg,Windows路径为C:\Users\你的用户名\.s3cfg,你可以直接用文本编辑器打开修改access_key、secret_key、host_base、host_bucket等参数,修改保存后立即生效,不需要重新执行配置命令。

2. 上传大文件的时候有什么优化方法吗?

s3cmd原生支持分块上传和多线程传输,上传100MB以上的大文件时,可以添加参数优化速度:s3cmd put --multipart-chunk-size-mb=10 --parallel /本地/大文件路径 s3://桶名/路径,其中--multipart-chunk-size-mb=10是设置每个分块的大小为10MB,--parallel是开启多线程并行上传,既可以提升上传速度,也支持断点续传,中途网络中断后重新执行命令会自动上传未完成的分块,不需要重新上传整个文件。

3. 怎么用s3cmd实现本地文件夹和存储桶的自动同步?

使用s3cmd sync命令即可实现增量同步,比如要把本地的/home/user/backup文件夹同步到存储桶的backup目录下,执行命令:s3cmd sync /home/user/backup/ s3://my-bucket/backup/,工具会自动对比本地和远程文件的修改时间、大小,只上传新增和修改过的文件,不会重复上传已经存在的相同文件。如果需要让远程存储桶的内容和本地完全一致(即删除远程存在但本地已经删除的文件),可以添加--delete参数:s3cmd sync --delete /home/user/backup/ s3://my-bucket/backup/,适合定期备份的场景。

4. s3cmd支持七彩云对象存储的归档存储类型吗?

支持,七彩云对象存储提供标准存储、低频存储、归档存储三类存储类型,其中归档存储的成本仅为标准存储的15%,适合存储长期不访问的冷数据。上传文件时添加--storage-class=ARCHIVE参数即可直接将文件上传为归档存储类型:s3cmd put --storage-class=ARCHIVE /本地/冷数据文件 s3://my-bucket/archive/,需要访问归档存储的文件时,在七彩云控制台提交解冻申请即可,解冻完成后就可以正常下载访问。

八、总结

整个用s3cmd管理对象存储文件的流程分为三个核心步骤:首先安装对应系统版本的s3cmd工具,其次配置对象存储的访问凭证、区域、Endpoint信息,最后根据需求执行对应的管理命令即可。操作过程中如果遇到报错,可优先对照常见错误部分排查配置问题。

对于没有自建存储需求的用户,建议优先选择七彩云对象存储这类兼容S3协议的公有云存储服务,既省去了硬件采购、运维的成本,也不需要做额外的协议适配,所有s3cmd的命令都可以直接使用,同时还能获得更高的数据可靠性和更低的存储成本。操作时注意妥善保管AccessKey和SecretKey,不要泄露给无关人员,重要数据建议开启存储桶的多版本功能,避免误删文件导致数据丢失。

需要稳定、兼容 S3 的对象存储?

七彩云对象存储适合图片、视频、大文件下载、静态资源托管和开发者接入。

访问七彩云官网

相关文章

S3 接入教程 / / 8 分钟阅读

rclone怎么挂载S3对象存储到本地磁盘

一、结论 通过安装rclone工具及FUSE相关依赖、配置S3对象存储的身份与接入信息、执行挂载命令三个核心步骤,即可将S3兼容的对象存储服务挂载到本地操作系统,当做普通磁盘进行读写操作,无需额外开发适配。整个流程对新手友好,按照标准化步骤操作15分钟内即可完成。

S3 接入教程 / / 7 分钟阅读

本地文件怎么批量同步到S3对象存储里

一、结论 你可以通过AWS CLI(官方命令行工具)配置S3服务的访问凭证后,使用内置的sync命令实现本地文件的增量批量同步,全程无需手动逐文件上传,支持大文件断点续传、文件过滤规则配置,且适配所有兼容S3协议的对象存储服务。

S3 接入教程 / / 8 分钟阅读

怎么用rclone工具批量管理S3对象存储文件

一、结论 你只需要在本地安装rclone开源工具,完成S3兼容对象存储的访问凭证配置,即可通过rclone内置的批量命令实现文件的上传、下载、同步、删除等全生命周期管理,全程无需复杂代码开发,兼容包括七彩云对象存储在内的所有符合S3标准协议的存储服务。

S3 接入教程 / / 8 分钟阅读

本地文件怎么批量同步到S3存储桶

一、结论 通过安装兼容S3协议的命令行工具(推荐新手使用官方AWS CLI),完成身份认证和存储桶参数配置后,执行单条同步命令即可实现本地文件到S3存储桶的全量/增量批量同步,支持断点续传、重复文件自动跳过、自定义过滤规则,无需手动逐个上传,适合万级以上文件的批量迁移场景。