amazon-web-services - 如何从 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 $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
命令以使执行更加冗长,但在大多数情况下这是不必要的。
推荐阅读
- javascript - 如何将 DOM 对象绑定到 JS 对象
- reactjs - 将钩子添加到引导菜单
- ansible - ansible查找挖掘:列表对象没有属性
- wordpress - 将 woocommerce-loop-product__title 从 H2 更改为 H6
- python - 显示来自 Conv2d 层的输出
- google-cloud-bigtable - 在单个事务/api 调用中将数据从一列移动到另一列
- php - 如何将多维数组转换为集合到 Laravel
- dplyr - 将列添加到数据框 - 将列显示为 tibble 但不在数据框中
- javascript - 来自 JavaScript 的页面上的 ASP.NET Web 窗体访问控制
- javascript - 当我有多个子组件时,如何将值从子组件传递给父组件?