从S3存储桶下载匹配的条目

13 浏览
0 Comments

从S3存储桶下载匹配的条目

我有一个S3存储桶,其中存储有几个以以下格式命名的日志文件:

index.log.yyyy-mm-dd-01

index.log.yyyy-mm-dd-02

...

yyyy代表年,mm代表月,dd代表日期。

现在我只想下载其中几个文件。我看过“Downloading an entire S3 bucket?”这个帖子。该帖子的最佳答案非常适用于下载整个桶,但是如果我想进行一些模式匹配,该怎么办?我尝试了以下命令,但它们没有起作用:

aws s3 sync s3://mybucket/index.log.2014-08-01-* .
aws s3 sync 's3://mybucket/index.log.2014-08-01-*' .

我还尝试使用s3cmd进行下载,使用了http://fosshelp.blogspot.in/2013/06的第7条和http://s3tools.org/s3cmd-sync。我运行了以下命令:

s3cmd -c myconf.txt get --exclude '*.log.*' --include '*.2014-08-01-*' s3://mybucket/ .
s3cmd -c myconf.txt get --exclude '*.log.*' --include '*.2014-08-01-*' s3://mybucket/ .

还有一些此类的变化。

有人能告诉我为什么模式匹配不起作用吗?或者是否需要使用其他工具。

谢谢!!

admin 更改状态以发布 2023年5月23日
0
0 Comments

我需要从一个S3访问日志存储桶中提取文件,但我发现官方的AWS CLI工具在这方面非常慢。因此,我寻找了其他替代方案。

https://github.com/peak/s5cmd效果非常好!

支持通配符,例如:

s5cmd -numworkers 30 cp 's3://logs-bucket/2022-03-30-19-*' .

速度非常快,因此您可以轻松处理具有S3访问日志的存储桶。

0
0 Comments

找到了解决问题的方法。虽然我不知道为什么其他命令不起作用..解决方法如下:

aws s3 sync s3://mybucket . --exclude "*" --include "*.2014-08-01-*"

注意: --exclude "*" 应该在 --include "---" 之前出现,反过来不会打印任何内容,因为它会在执行 'include' 之后执行 'exclude' (现在无法找到我读过的参考资料了)。

0