/s3cmd/s3cmd /usr/bin/s3cmd 二:使用方法 1.配置Access Key ID 和 Secret Access Key #s3cmd --configure #s3cmd mb s3://my-bucket-name 4.删除空 bucket #s3cmd rb s3://my-bucket-name 5.列举 Bucket 中的内容 #s3cmd 7.上传并将权限设置为所有人可读 #s3cmd put --acl-public file.txt s3://my-bucket-name/file.txt 8.批量上传文件 #s3cmd put ./* s3://my-bucket-name/ 9.下载文件 #s3cmd get s3://my-bucket-name/file.txt file.txt 10.批量下载 #s3cmd get #s3cmd du -H s3://my-bucket-name 三:文件夹处理规则 带"/"斜杠的 dir1,相当于上传yh目录下的所有文件,即类似 "cp ./* " # s3cmd put
二、下载s3cmd安装包并安装 下载地址:https://sourceforge.net/projects/s3tools/files/s3cmd/ 我们这里选择s3cmd-1.5.2. node4:~# apt-get install python-setuptools root@node4:~# python setup.py install root@node4:~# s3cmd host_base = node4 host_bucket = %(bucket)s.node4 root@node4:~# ln -s /s3cmd-1.5.2/build/scripts-2.7/s3cmd /usr/bin/s3cmd 三、安装dnsmasq root@node4:~# apt-get install dnsmasq root@node4:~# vim /etc/dnsmasq.conf
这里我们使用s3cmd-1.0.0.tar.gz安装包 2.解压安装包 tar xzvf s3cmd-1.0.0.tar.gz 3.移动路径 mv s3cmd-1.0.0 /usr/local/s3cmd 4.创建软链接 ln -s /usr/local/s3cmd/s3cmd /usr/bin/s3cmd 5.执行配置命令(按提示输入相应密码等) s3cmd --configure 注:执行该命令后 mb s3://chy001 上传文件: s3cmd put /xxx/xxx.txt s3://chy001 删除文件: s3cmd del s3://chy001/xxx.txt 上传目录: s3cmd put -r /xxx/xxx s3://chy001/ 删除目录: s3cmd del -r s3://chy001/xxx 下载文件: s3cmd get s3://chy001/ 把点号改成下划线就可成功创建了: s3cmd mb s3://aa_chy001 Bucket 's3://aa_chy001/' created
安装s3cmd virtualenv ven_s3 source ven_s3/bin/activate pip install pip --upgrade pip install s3cmd 查看user s3cmd --configure Enter new values or accept defaults in brackets with Enter. = 192.168.1.200:8080 ... host_base = 192.168.1.200:8080 host_bucket = 192.168.1.200:8080/%(bucket) s3cmd 操作 s3cmd ls # 查看bucket s3cmd mb s3://test # 创建bucket s3cmd put .s3cfg s3://test # 上传文件 s3cmd la # 查看object s3cmd get s3://test/.s3cfg # 下载文件 s3cmd rm s3://test/.s3cfg # 删除文件 s3cmd rb s3://test # 删除bucket 参考链接
最近有同学反映 s3cmd 上传的数据比原文件小…WTF,居然有这种事? 通过给 s3cmd -d put 加下 debug 日志,查看一下分段上传的过程,发现段数和最后一段的尾巴 Bytes 相加确实就是1024M也就是1G,应该不存在丢数据的问题。 先不管是哪个环节的问题,我先要确认不是 s3cmd 的问题,看了下分段上传的代码,决定分段上传的段数的因素就一个,就是文件的总大小,参考下图,这个 size 是通过 python 的 os.stat() 然后就是重新编一个 s3cmd 出来了,幸好 s3cmd 有提供 Makefile,一个命令就解决了。下面是 s3cmd 编译的日志。 ➜ s3cmd git:(master) make git-rpm rm -rf s3cmd-*.tar.gz *.rpm *~ s3cmd.spec find .
==1.6.0 [root@localhost s3cmd-1.6.0]# pip install requests s3cmd==1.6.0 Downloading/unpacking requests Downloading requests-2.18.4-py2.py3-none-any.whl (88kB): 88kB downloaded Downloading/unpacking s3cmd /setup.py) egg_info for package s3cmd Using xml.etree.ElementTree for XML processing Downloading/ ==1.6.0) Downloading six-1.11.0-py2.py3-none-any.whl Installing collected packages: requests, s3cmd 644 to 755 changing mode of /usr/bin/s3cmd to 755 Successfully installed requests s3cmd certifi
这里我们使用s3cmd-1.0.0.tar.gz安装包 2.解压安装包 tar xzvf s3cmd-1.0.0.tar.gz 3.移动路径 mv s3cmd-1.0.0 /usr/local/s3cmd 4.创建软链接 ln -s /usr/local/s3cmd/s3cmd /usr/bin/s3cmd 5.执行配置命令(按提示输入相应密码等) s3cmd --configure mb s3://chy001 上传文件: s3cmd put /xxx/xxx.txt s3://chy001 删除文件: s3cmd del s3://chy001/xxx.txt 上传目录 : s3cmd put -r /xxx/xxx s3://chy001/ 删除目录: s3cmd del -r s3://chy001/xxx 下载文件: s3cmd get s3://chy001 /xxx.txt /xxx/xxx.txt 下载目录: s3cmd get -r s3://chy001/xxx /xxx/
习惯了文件系统的我们一直都觉得 ls 命令应该会把文件全部 list 出来,对于 s3cmd ls 我一开始也是这么理解的。 直到有一天,同事通过 s3cmd delete 删除了一个文件,执行 s3cmd ls 竟然返回200,但是 s3cmd get 却返回404,这就很奇怪了,用户明明已经删了对象,为何 ls 得到呢,这不合理 [root@site ~]# s3cmd ls s3://game/1586744327001/sample/allblueapp/80121/ap_80121_14_20200515115522_216 于是去看了下 s3cmd 的源码,发现 s3cmd ls 只要 bucket 存在,就一定会返回200,不管要 ls 的 object 存不存在,于是做了个实验,去 ls 一个从来不存在的 object https://github.com/s3tools/s3cmd/blob/master/S3/S3.py#L324
1、配置s3cmd s3cmd --configure 2、列举所有buckets(bucket相当于根文件夹) 命令:s3cmd ls root@node4:/home# s3cmd ls 2016- bucket 命令:s3cmd rb s3://{$BUCKETNAME} root@node4:/home# s3cmd rb s3://zhangbo1 Bucket 's3://zhangbo1/ ' removed 5、上传某个文件到bucket 命令:s3cmd put {$FILENAME}t s3://{$BUCKETNAME} root@node4:~# s3cmd put s3cmd- 获取对应的bucket所占用的的空间大小 命令:s3cmd du -H s3://{目录} root@node4:~# s3cmd du -H s3://zhangbo 185k s3://zhangbo / root@node4:~# s3cmd du -H s3://zhangbo/hehe 92k s3://zhangbo/hehe 10、查看更多关于bucket和文件的信息 命令:s3cmd
通过 s3cmd 上传文件的命令是 s3cmd put,s3cmd 可以上传目录或者文件,不过需要注意的是,如果直接上传的是文件,在 s3cmd put 的过程中是比上传文件夹省去很多步骤的,具体可以看下源码里的 Put file into bucket s3cmd put FILE [FILE...] s3://BUCKET[/PREFIX] 查看 s3cmd 的源码。 这个方法主要是解析用户 s3cmd put 之后的参数。 ? -type f | xargs -I {} s3cmd put {} s3://runzhliu/kevintest/{} 个人认为,不管是哪种方法,对于上传文件夹,最后都是要遍历整个文件夹的,但是下面的方法
简介 S3cmd 是免费的命令行工具和客户端,用于在 Amazon S3 和其他兼容 S3 协议的对象存储中上传、下载和管理数据。本文主要介绍如何使用 S3cmd 访问 COS 上的文件。 安装 S3cmd 使用 pip 安装(推荐) pip install s3cmd 安装成功之后,用户可以通过--version命令查看当前的版本信息。 查询存储桶列表 命令如下: s3cmd ls 查询对象列表 命令如下: #命令 s3cmd ls s3://<BucketName-APPID> #操作示例 s3cmd ls s3://examplebucket /<cosdirpath> #操作示例 s3cmd put dir1 s3://examplebucket-1250000000/dir1/ --recursive s3cmd put dir1 dir2 /exampleobject 暂不支持下载文件夹 删除文件或文件夹 删除文件命令如下: #命令 s3cmd del s3://<BucketName-APPID>/<cospath> #操作示例 s3cmd
简介 S3cmd 是免费的命令行工具和客户端,用于在 Amazon S3 和其他兼容 S3 协议的对象存储中上传、下载和管理数据。本文主要介绍如何使用 S3cmd 访问 COS 上的文件。 安装 S3cmd 使用 pip 安装(推荐) pip install s3cmd 安装成功之后,用户可以通过--version命令查看当前的版本信息。 查询存储桶列表 命令如下: s3cmd ls 查询对象列表 命令如下: #命令 s3cmd ls s3://<BucketName-APPID> #操作示例 s3cmd ls s3://examplebucket /<cosdirpath> #操作示例 s3cmd put dir1 s3://examplebucket-1250000000/dir1/ --recursive s3cmd put dir1 dir2 /exampleobject 暂不支持下载文件夹 删除文件或文件夹 删除文件命令如下: #命令 s3cmd del s3://<BucketName-APPID>/<cospath> #操作示例 s3cmd
简介 S3cmd 是免费的命令行工具和客户端,用于在 Amazon S3 和其他兼容 S3 协议的对象存储中上传、下载和管理数据。本文主要介绍如何使用 S3cmd 访问 COS 上的文件。 安装 S3cmd 使用 pip 安装(推荐) pip install s3cmd 安装成功之后,用户可以通过--version命令查看当前的版本信息。 查询存储桶列表 命令如下: s3cmd ls 查询对象列表 命令如下: #命令 s3cmd ls s3://<BucketName-APPID> #操作示例 s3cmd ls s3://examplebucket /<cosdirpath> #操作示例 s3cmd put dir1 s3://examplebucket-1250000000/dir1/ --recursive s3cmd put dir1 dir2 /exampleobject 暂不支持下载文件夹 删除文件或文件夹 删除文件命令如下: #命令 s3cmd del s3://<BucketName-APPID>/<cospath> #操作示例 s3cmd
S3cmd 是免费的命令行工具和客户端,用于在 Amazon S3 和其他兼容 S3 协议的对象存储中上传、下载和管理数据。本文主要介绍如何使用 S3cmd 访问 COS 上的文件。 -1250000000 2、删除存储桶 命令如下: #命令s3cmd rb s3://<BucketName-APPID>#操作示例s3cmd rb s3://examplebucket-1250000000 3、查询存储桶列表 命令如下: s3cmd ls 4、查询对象列表 命令如下: #命令s3cmd ls s3://<BucketName-APPID>#操作示例s3cmd ls s3:/ 11、显示桶内未完成的分块上传 命令如下: #命令s3cmd multipart s3://<BucketName-APPID>#操作示例s3cmd multipart s3://examplebucket 中进行查询 13、清除分块上传文件碎片 命令如下: #命令s3cmd abortmp s3://<BucketName-APPID>/<cospath> UploadID#操作示例s3cmd
s3cmd(1) s3cmd(1) NAME s3cmd - COMMANDS s3cmd can do several actions specified by the following commands. s3cmd mb s3://BUCKET Make bucket s3cmd rb s3://BUCKET Remove bucket s3cmd ls [s3://BUCKET[/PREFIX]] List objects or buckets s3cmd (by default $HOME/.s3cmd). To some extent s3cmd put and s3cmd get share a similar behaviour with sync.
于是看了一下 s3cmd,果然有更简单的方法,通过 s3cmd -h 可以看到 expire 命令。 ? 然后就简单了,设置一下 s3cmd expire s3://expire-test --expiry-day=1,然后 s3cmd getlifcycle 看一下配置。 ? 关于其他几个选项,仍然可以通过 s3cmd -h 获得,如下图。 ?
正常使用的 Ceph RGW,还有正常使用的 s3cmd,突然今天碰到一个用户反馈说,在使用 s3cmd get 时候出现大量的404,也就是下载对象 Object 的时候发现对象不存在。 可以判断到的是因为文件名带空格,所以在 get 的时候我才 s3cmd 没有处理这部分的内容,所以自动截断了,因为截断之后的对象肯定是不存在的,于是就报404了。 image.png 研究了一下,发现我们提供的默认的 s3cmd 的版本是1.6的,其实这个版本比较低了,而且经常有问题,所以测试了一下2.1的版本,已经修复了这个问题了,于是这个问题就顺利解决了。
S3cmd使用教程 2.1. 在 Cygwin 安装过程中,选择安装s3cmd包。 安装完成后,可以在命令提示符或终端中输入s3cmd --version来验证安装是否成功。 2.2.2. 基础操作 查看桶: s3cmd ls 查看桶里文件: s3cmd ls s3://my-bucket 创建 Bucket: s3cmd mb s3://my-bucket 上传文件: s3cmd put s3cmd 进阶用法 以下是 s3cmd 的进阶用法,详细讲解如何进行本地同步、权限管理、自动化备份等操作。 1. s3cmd sync /local-folder/ s3://my-bucket --delete-removed:这是 s3cmd 的同步命令。
别急,下面我们来说下两种方式来玩,一种是S3cmd方式 首先安装S3cmd yum –y install s3cmd 安装完之后运行s3cmd --configure进行初始化配置(说白了就是生成个配置文件 那么复制完之后在进行s3cmd –configure配置 配置完之后就可以开始玩了。 附赠s3cmd常用命令 s3cmd ls #查看可用的bucket s3cmd mb s3://devin_bucket #创建bucket,且bucket名字是唯一的,不能重复 s3cmd ls s3://devin_bucket #列出bucket内容 s3cmd put devin.txt s3://devin_bucket #上传本地file到指定的bucket s3cmd put 可以在s3cmd的命令后面加上-d 也就是开启debug然后排错。 遇到最多的问题就是解析问题。那么如何解决解析的问题呢? 可以查看下这篇文章《教你如何配置轻量级DNS》。
然而一段猛操作之后,发现用户原来通过 s3cmd 2.0.1 能够请求成功的请求全都变成403了,因此本地安装 s3cmd 来测试一下发下还真是 S3Error: 403 (Forbidden), 给 s3cmd 加个 debug 选项 -d,错误如下图。 这里需要补充一点知识,就是 s3cmd 目前支持两种认真的方式一种是 v2,一种是 v4,而 s3cmd 2.x 版本默认用的是 v4,而 1.x 版本默认用的是 v2,这两种认证方式是有区别的,简单来说就是 v4 除了像 v2,那样需要S3桶的 accesskey 和 secretkey,还需要如 date 等信息来签名,然后放到 http request 的 Header 上,而 s3cmd 2.x 版本支持通过在 Nginx 代理之后就让用户各种修改,所以通过查阅相关文档,发现 Nginx 在做代理的时候会将原来请求的 Header 做 buffer 缓存,导致 RGW 接受到的请求的 Header,并不是原来 s3cmd