由于某种原因,有一堆包含许多不同文件的存储桶,所有这些文件都具有相同的前缀但具有不同的日期:
backup.2017-01-01aa
backup.2017-01-01ab
backup.2017-01-15aa
backup.2017-01-15ab
backup.2017-02-01aa
backup.2017-02-01ab
等。
如何下载以“backup.2017-01-01”开头的仅文件?
答案 0 :(得分:7)
您必须使用aws s3 sync s3://yourbucket/
你可以给aws s3同步提供两个参数; --exclude和--include,两者都可以使用“*”通配符。
首先,我们必须--exclude "*"
排除所有文件,然后我们将--include "backup.2017-01-01*"
包含我们想要的具有特定前缀的所有文件。显然,您可以更改包含,这样您也可以执行--include "*-01-01*"
。
就是这样,这是完整的命令:
aws s3 sync s3://yourbucket/ . --exclude "*" --include "backup.2017-01-01*"
另外,请记住使用--dryrun
来测试您的命令,并避免下载存储桶中的所有文件。
答案 1 :(得分:0)
据我了解,--include
在本地进行过滤。因此,如果您的存储桶中包含数百万个文件,该命令可能需要花费几个小时才能运行,因为该命令需要下载存储桶中所有文件名的列表。另外,还有一些额外的网络流量。
但是aws s3 ls
可以采用截断的文件名来列出所有相应的文件,而不会产生任何额外的流量。所以你可以
aws s3 ls s3://yourbucket/backup.2017-
查看文件,诸如此类
aws s3 ls s3://yourbucket/backup.2017- | colrm 1 31 | xargs -I % aws s3 cp s3://yourbucket/% .
复制文件。