如何从 AWS 中的前缀恢复多个文件
How to restore multiple files from a prefix in AWS
我在 AWS S3 Glacier 中有很多对象,我正在尝试恢复其中一些位于相同前缀(又名文件夹)上的对象。但是我找不到一次恢复它们的方法,可能值得一提的是这个前缀中的一些元素本身就是我也想恢复的前缀。
我已经设法让它工作了。我必须编写一个简单的 bash 脚本来遍历存储桶前缀中的所有对象,这些对象是 GLACIER
或 DEEP_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
我在 AWS S3 Glacier 中有很多对象,我正在尝试恢复其中一些位于相同前缀(又名文件夹)上的对象。但是我找不到一次恢复它们的方法,可能值得一提的是这个前缀中的一些元素本身就是我也想恢复的前缀。
我已经设法让它工作了。我必须编写一个简单的 bash 脚本来遍历存储桶前缀中的所有对象,这些对象是 GLACIER
或 DEEP_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