首页 > 解决方案 > 如何从 AWS 中的前缀恢复多个文件

问题描述

我在 AWS S3 Glacier 中有很多对象,我正在尝试恢复其中一些位于相同前缀(又名文件夹)上的对象。但是我找不到一次恢复它们的方法,值得一提的是,这个前缀中的一些元素本身就是我也想恢复的前缀。

标签: amazon-web-servicesamazon-s3amazon-glacier

解决方案


我已经设法让它工作了。我必须编写一个简单的 bash 脚本来遍历存储桶前缀中的所有对象,这些对象是GLACIERDEEP_ARCHIVE取决于情况。所以这有两个组成部分:

首先,您需要一个包含所有对象的文件:

aws s3api list-objects-v2 --bucket someBucket --prefix 
some/prefix/within/the/bucket/ --query "Contents[?StorageClass== 'GLACIER']" 
-- output text | awk '{print $2}' > somefile.txt

list-objects-v2列出前缀中的所有对象,使用awk '{print $2}'命令我们将确保生成的文件是可迭代的并且只包含对象的名称。

最后,遍历恢复对象的文件:

for i in $(cat somefile.txt); 
do
    #echo "Sending request for object: $i"
    aws s3api restore-object --bucket $BUCKET --key $i --restore-request Days=$DAYS
    #echo "Request sent for object: $i"  
done

您可以取消注释echo命令以使执行更加冗长,但在大多数情况下这是不必要的。


推荐阅读