在windows下使用s3cmd和s3browser来管理amazon s3的笔记
2022-05-29 22:37:15

S3是Amazon S3的简称,s3cmd是一款命令行工具用来管理s3,同时还有一款图形化的管理工具:s3 browser。

因为绝大多数用户都是在linux下管理s3,而我们的打包机是在windows上,所以需要在windows下管理s3,本文记录一下踩坑。

S3文档

s3的官方文档:https://s3tools.org/s3cmd

s3cmd下载:https://github.com/s3tools/s3cmd


在windows上的踩坑

有两个选项必须要配置对否则会一直报301错误,导致无法上传和下载,但是s3 ls这条命令是可以用的

就是这两个选项:

signature_v2 = True 这个加密选项如果是False每次上传或下载文件都会报301错误

host_bucket = %(bucket)s.s3.nie.xxx.com ,这个选项如果不对,无法上传或下载

linux下的示例配置文件(windows下的ini配置文件大体类型)

[default]
access_key = 
secret_key =
default_mime_type = binary/octet-stream
enable_multipart = True
encoding = UTF-8
encrypt = False
host_base = s3.nie.xxx.com
host_bucket = %(bucket)s.s3.nie.xxx.com
multipart_chunk_size_mb = 30
socket_timeout = 300
stop_on_error = False
use_https = False
use_mime_magic = True
verbosity = WARNING
signature_v2 = True

windows上的s3配置文件在这个目录下(不同于linux):

Configuration saved to 'C:Userszhaoqingqing01AppDataRoamings3cmd.ini'

配置文件命令解释

use_mime_magic = True #自动判断上传文件的mime类型

signature_v2 = True # 需要加密

更加详细的解释:https://www.bilibili.com/read/cv6012754


在windows下安装s3cmd

安装步骤:

  1. 从github下载s3cmd,需要安装python2,并把python添加到环境变量中

  2. cd到s3cmd所在的目录下,执行:python setup.py install

  3. 等待安装完成后,所有的s3cmd命令都可以使用了,但需要cd到s3cmd目录下

注意:在所有命令前都需要加上python,因为是通过python来执行的。

示例:

cd c:
cd c:s3cmd 
python s3 ls

参考文档:https://docs.e2enetworks.com/guides/s3cmdwindows.html(windows上可以不用安装Gpg4win(加密软件))


s3cmd常用命令

可用的命令列表,见这里的commands部分:https://s3tools.org/usage

上传/同步某个目录 : s3cmd sync LOCAL_DIR s3://BUCKET[/PREFIX] or s3://BUCKET[/PREFIX] LOCAL_DIR,例子:python s3cmd sync "c:/test_res" s3://xxx-dev/game_rsync_res/res

查询桶下面所有的文件: s3cmd ls s3://BUCKET[/PREFIX],例子:s3cmd ls s3://xxx-dev

上传某个文件:python s3cmd put "E:/Temp/test_s3.txt" s3://xxx-dev/

下载某个文件:python s3cmd get s3://xxx-dev/test_s3.txt


FAQ

Q:如何新增文件?

A:往文件夹中新增加文件,然后在同步文件夹时,就会把新文件上传过去

Q:如何删除文件?

A:试过先在文件夹下删除某个文件,然后调用sync,看看远程是否已删除这张图片?

Q:如何更新某张图片?

A:sync指令替换本地的图片就能更到最新

Q:如何切换不同的key?因为开发环境和正式环境的key不一样

A:像linux那样,在每条命结尾使用 -c“xx.ini”


S3存在的问题

通过s3cmd del 删除某个目录后,还可以下载到,不知是否因为有缓存?

把文件夹下的某个文件删除后,通过sync同步文件,还可以下载到删除掉的文件


S3 Browser(可视化管理s3)

除了命令行的方式,在windows下还有一个可视化的的软件,它可以列出某个桶及目录下的所有文件,并且提供可视化的上传和下载操作

使用文档:https://docs.e2enetworks.com/guides/s3browser_windows.html

官网:S3 Browser - Online help for Browser - Freeware client for Amazon S3. Amazon S3 bucket browser. S3 Client.

使用方法如下:

新建一个Account,每项配置如下

Account Type:S3 Compatible Storage

REST Endpoint:s3.nie.xxx.com

不要勾选SSL/TLS和 Encrypt Access Keys

点击左下角打开高级设置,修改Addressing model为Virtual hosted style,然后点击 Save changes

image-20220528123811184


日志保存位置

S3 Browser可以保存每次操作的日志,日志保存位置:%APPDATA%S3Browserlogs


S3 Browser也提供命令行

首先本地磁盘的路径符需要是,否则会报Exception


连接遇到问题

如果连接时报错误:Unable to perform requested action,在Edit Account中打开高级设置,修改Addressing model为Virtual hosted style

image-20220529204858632

修改Addressing model为Virtual hosted style

本文摘自 :https://www.cnblogs.com/


更多科技新闻 ......