首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用前缀从S3桶下载多个文件

使用前缀从S3桶下载多个文件
EN

Stack Overflow用户
提问于 2022-11-09 04:42:31
回答 1查看 86关注 0票数 1

如何从S3下载这些文件?

代码语言:javascript
复制
$ aws s3 ls s3://student162a/kagapa_logs/2022-11-08
2022-11-08 00:46:21        607 2022-11-08-00-46-20-D1F1689F5DFAA555
2022-11-08 04:25:12        554 2022-11-08-04-25-11-09852D4EBBA54CAA
2022-11-08 04:27:37        556 2022-11-08-04-27-36-6AB56DD0D92C6C50
2022-11-08 04:29:16        574 2022-11-08-04-29-15-E16FB6F8BAE53BA0
2022-11-08 04:30:08        554 2022-11-08-04-30-07-5BDEB31F5D2E673A
2022-11-08 04:33:40        580 2022-11-08-04-33-39-68883A634F09D12A
2022-11-08 04:38:41        574 2022-11-08-04-38-40-7CBCAAC2C825391B
2022-11-08 04:38:51        598 2022-11-08-04-38-50-F64BB1BFF1565114
2022-11-08 04:43:01        561 2022-11-08-04-43-00-852CE3A46A10FA8A
2022-11-08 09:29:13        572 2022-11-08-09-29-12-4487894C85BEA4A0
2022-11-08 11:13:25        453 2022-11-08-11-13-24-B15E1663350834D5
2022-11-08 11:21:13        436 2022-11-08-11-21-12-19C796E81A1630A5
2022-11-08 18:31:09        525 2022-11-08-18-31-08-79A1114CD6D2331D
2022-11-08 18:34:03        544 2022-11-08-18-34-02-936D7F146C21B0D9

我尝试过同步和cp,但它似乎不起作用。

代码语言:javascript
复制
$ aws s3 sync s3://student162a/kagapa_logs/2022-11-08 .

$ aws s3 cp  s3://student162a/kagapa_logs/2022-11-08* .

我不想使用"GUI客户端“。可以使用命令行吗?

更新:

这似乎很管用。但是,是否有更好(更快)的方式使用前缀下载?

代码语言:javascript
复制
#!/bin/sh
for file in `aws s3 ls  s3://student162a/kagapa_logs/2022-11-08 | awk '{print $4}'`
do
aws s3 cp s3://student162a/kagapa_logs/$file .
done

这比shell脚本更快,但如果有数千个文件,仍然需要很长时间。

代码语言:javascript
复制
aws s3 ls  s3://student162a/kagapa_logs/2022-11 | awk '{print $4}' | parallel -I% --max-args 1 aws s3 cp s3://student162a/kagapa_logs/% .

我使用这个shell脚本创建了一个包含所有命令的文本文件:

代码语言:javascript
复制
#!/bin/sh
for file in `aws s3 ls  s3://student162a/kagapa_logs/2022-11 | awk '{print $4}'`
do
echo "aws s3 cp s3://student162a/kagapa_logs/$file ." >> myfile.txt
done

然后使用这样的并行命令:

代码语言:javascript
复制
parallel --jobs 30 < myfile.txt

生成文本文件不需要时间。并行命令为1000个文件花费了10分钟。我是不是遗漏了什么?

更新2

使用控制台,我搜索前缀2022-11-08,然后选择并将所有文件复制到另一个文件夹。如果有少于300个文件,它就能工作。如果有很多文件,那么我必须选择每个页面上的所有文件并复制到另一个文件夹。如果有几千个文件要下载,则此选项将无法工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-09 05:01:45

AWS提供了包含或排除对象的选项。

更多信息可在- https://docs.aws.amazon.com/cli/latest/reference/s3/#use-of-exclude-and-include-filters上找到。

要将多个文件从aws桶下载到当前目录,可以使用递归、排除和包含标志。参数的顺序很重要。

示例命令:

aws s3 cp s3://my_bucket/ . --recursive --include "prefix-a*" --exclude "*"

确保按所需的顺序保留包含和排除。

在您的示例中,命令应该如下所示- aws s3 cp s3://student162a/kagapa_logs/ . --recursive --exclude "*" --include "2022-11-08*"

  • 更新-测试了类似的情况在我的桶-

aws s3 cp s3://gagan-miller-bucket-bucket/dir1/ . --recursive --exclude "*" --include "2022-11-08"

代码语言:javascript
复制
download: s3://gagan-miller-bucket-bucket/dir1/2022-11-08 004621.txt to ./2022-11-08 004621.txt 
download: s3://gagan-miller-bucket-bucket/dir1/2022-11-08 004621 - Copy (3).txt to ./2022-11-08 004621 - Copy (3).txt 
download: s3://gagan-miller-bucket-bucket/dir1/2022-11-08 004654.txt to ./2022-11-08 004654.txt```
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74370002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档