You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AWS CLI为S3桶内所有Deep Glacier文件批量发起恢复?

S3 Deep Archive存储层文件批量恢复AWS CLI实现方案

前置要求

已完成AWS CLI身份配置,对应账号具备s3:ListBucket、s3:RestoreObject权限。

Linux/macOS 环境实现

直接执行以下命令即可批量发起恢复请求:

aws s3api list-objects-v2 --bucket my-backup-bucket \
  --query "Contents[?StorageClass=='DEEP_ARCHIVE'].Key" \
  --output text \
  --no-paginate | tr '\t' '\n' | xargs -I {} aws s3api restore-object \
  --bucket my-backup-bucket \
  --key "{}" \
  --restore-request Days=30,GlacierJobParameters={Tier=Bulk}

参数调整说明:

  • 替换my-backup-bucket为你的实际存储桶名称
  • Days=30:修改为你需要的恢复后文件可访问的天数,到期后文件会自动回到Deep Archive存储层
  • Tier=Bulk:批量恢复推荐选择Bulk层级,费用最低,恢复耗时5-12小时;可选Standard层级,恢复耗时12小时以内,费用高于Bulk;注意DEEP_ARCHIVE不支持Expedited快速恢复层级
  • 如果仅需要恢复指定目录下的文件,在list-objects-v2命令中添加--prefix 目标目录路径/参数即可

Windows PowerShell 环境实现

执行以下脚本:

$keys = aws s3api list-objects-v2 --bucket my-backup-bucket --query "Contents[?StorageClass=='DEEP_ARCHIVE'].Key" --output text --no-paginate
foreach ($key in $keys -split "`t") {
  aws s3api restore-object --bucket my-backup-bucket --key $key --restore-request Days=30,GlacierJobParameters={Tier=Bulk}
}

参数调整规则和Linux环境一致。

验证恢复状态

单个文件恢复状态可以通过以下命令查看:

aws s3api head-object --bucket my-backup-bucket --key 目标文件路径

返回结果中Restore字段的ongoing-request值为false时代表恢复完成,expiry-date字段会展示恢复文件的到期时间。

注意事项

  • 若存储桶文件总数超过1000,必须添加--no-paginate参数才能拉取全量文件列表,避免漏处理
  • 若终端会话不稳定,建议在Linux/macOS环境下通过nohup执行命令,避免会话断开导致任务中断
  • 启用版本控制的存储桶默认恢复最新版本的文件,需要恢复历史版本时可以在restore-object命令中添加--version-id参数指定对应版本号

内容的提问来源于stack exchange,提问作者mcExchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 02:00:02