由于某种原因,有一堆包含许多不同文件的存储桶,所有这些文件都具有相同的前缀但具有不同的日期:
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”开头的文件?
你必须使用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
测试您的命令,并避免下载存储桶中的所有文件。
据我了解,--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/% .
复制你的文件。