如何从 AWS 中的前缀恢复多个文件

How to restore multiple files from a prefix in AWS

我在 AWS S3 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 }' > somefile.txt

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

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

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 命令以使执行更加冗长,但在大多数情况下没有必要。

这可以通过 s3cmd (https://s3tools.org/s3cmd) 轻松完成。

您可以使用带有 --recursive 选项的 restore 命令。无需首先收集要恢复的对象列表。您只需要指定恢复对象的日期和恢复的优先级。

示例:

s3cmd restore  --recursive s3://BUCKET-NAME/[PREFIX/TO/OBJECTS] --restore-days=60 --restore-priority=standard