从s3存储桶复制多个文件

时间:2016-06-24 20:32:20

标签: amazon-web-services amazon-s3 aws-cli

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

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

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

6 个答案:

答案 0 :(得分:12)

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

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

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

答案 1 :(得分:11)

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

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

答案 2 :(得分:7)

您可能想要使用&#34;同步&#34;而不是&#34; cp&#34;。以下将仅使用&#34; .txt&#34;下载/同步文件。本地文件夹中的扩展程序:

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

答案 3 :(得分:4)

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

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

确保您获得excludeinclude过滤器的顺序,因为这可能会改变整个含义。

答案 4 :(得分:2)

尝试以上所有方法。没有太多的喜悦。最后,将@rajan的回复改编成单行:

for file in whatever*.txt; do { aws s3 cp $file s3://somewhere/in/my/bucket/; } done

答案 5 :(得分:-1)

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

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