我无法从AWS S3存储桶下载多个文件到本地计算机。
我有我要下载的所有文件名,我不想要其他人。我怎样才能做到这一点 ?在aws-cli中是否有任何类型的循环我可以进行一些迭代?
我需要下载几百个文件,因此似乎无法使用一个将所有文件名作为参数的命令。
有一个bash脚本可以读取文件filename.txt
中的所有文件名。
#!/bin/bash
set -e
while read line
do
aws s3 cp s3://bucket-name/$line dest-path/
done <filename.txt
也可以使用--recursive
选项,如documentation for cp
命令中所述。它将以递归方式复制指定前缀下的所有对象。例如。:
aws s3 cp s3://folder1/folder2/folder3 . --recursive
将获取folder1 / folder2 / folder3下的所有文件并将它们复制到本地目录。
您可能希望使用“sync”而不是“cp”。以下内容将仅下载/同步本地文件夹中带有“.txt”扩展名的文件:
aws s3 sync --exclude="*" --include="*.txt" s3://mybucket/mysubbucket .
根据doc,您可以使用include
和exclude
过滤器与s3 cp
。所以你可以这样做:
aws s3 cp s3://bucket/folder/ . --recursive --exclude="*" --include="2017-12-20*"
确保你得到exclude
和include
过滤器的顺序,因为这可能会改变整个意义。
我解决了问题,可能有点愚蠢,但它的确有效。
使用python,我在一个.sh文件上写了多行AWS下载命令,然后在终端上执行它。