从s3存储桶复制多个文件

问题描述 投票:11回答:5

我无法从AWS S3存储桶下载多个文件到本地计算机。

我有我要下载的所有文件名,我不想要其他人。我怎样才能做到这一点 ?在aws-cli中是否有任何类型的循环我可以进行一些迭代?

我需要下载几百个文件,因此似乎无法使用一个将所有文件名作为参数的命令。

amazon-web-services amazon-s3 aws-cli
5个回答
11
投票

有一个bash脚本可以读取文件filename.txt中的所有文件名。

#!/bin/bash  
set -e  
while read line  
do  
  aws s3 cp s3://bucket-name/$line dest-path/  
done <filename.txt

12
投票

也可以使用--recursive选项,如documentation for cp命令中所述。它将以递归方式复制指定前缀下的所有对象。例如。:

aws s3 cp s3://folder1/folder2/folder3 . --recursive

将获取folder1 / folder2 / folder3下的所有文件并将它们复制到本地目录。


7
投票

您可能希望使用“sync”而不是“cp”。以下内容将仅下载/同步本地文件夹中带有“.txt”扩展名的文件:

aws s3 sync --exclude="*" --include="*.txt" s3://mybucket/mysubbucket .

4
投票

根据doc,您可以使用includeexclude过滤器与s3 cp。所以你可以这样做:

aws s3 cp s3://bucket/folder/ . --recursive --exclude="*" --include="2017-12-20*"

确保你得到excludeinclude过滤器的顺序,因为这可能会改变整个意义。


-1
投票

我解决了问题,可能有点愚蠢,但它的确有效。

使用python,我在一个.sh文件上写了多行AWS下载命令,然后在终端上执行它。

© www.soinside.com 2019 - 2024. All rights reserved.