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

无法下载AWS S3 Glacier对象,如何修改命令实现成功复制?

解决S3 GLACIER存储类文件无法复制的问题

你碰到的这个错误很常见——GLACIER是S3的归档存储类,这类文件默认处于“归档”状态,不能直接下载,必须先恢复(解冻)才能访问,或者你可以选择跳过这些归档文件继续复制其他内容。下面给你两种具体的解决方案:

方案1:跳过GLACIER文件,只复制可直接访问的内容

如果那些归档文件不是你当前需要的,可以直接在命令里添加--ignore-glacier-warnings参数,这样遇到GLACIER对象时会自动跳过,不会报错中断整个复制流程。另外别忘了加--recursive(如果是复制整个目录/桶的话),否则只会复制顶层文件:

aws s3 cp s3://${s3Location} ${localDumpPath} --recursive --ignore-glacier-warnings

方案2:恢复GLACIER文件后再复制

如果你确实需要这些归档文件,就得先把它们恢复到可访问状态,步骤如下:

1. 批量恢复GLACIER对象

先筛选出存储类为GLACIER的文件,然后批量发起恢复请求:

# 替换成你的桶名和前缀(如果有子路径的话)
BUCKET_NAME="your-bucket-name"
PREFIX="your-prefix-if-needed"

aws s3api list-objects --bucket $BUCKET_NAME --prefix $PREFIX --query 'Contents[?StorageClass==`GLACIER`].Key' --output text | while read -r OBJECT_KEY; do
  # 发起恢复请求,设置7天可访问期,用标准恢复层级(几小时内完成)
  aws s3api restore-object --bucket $BUCKET_NAME --key "$OBJECT_KEY" --restore-request '{"Days": 7, "GlacierJobParameters": {"Tier": "Standard"}}'
done

这里的参数说明:

  • Days:设置恢复后文件保持可访问的天数(比如7天,到期会自动回到归档状态)
  • Tier:恢复速度选项,Standard是标准速度(性价比最高,3-5小时完成),Expedited是加急(1-5小时,费用更高),Bulk是批量(12-48小时,最便宜)

2. 等待恢复完成

恢复需要时间,你可以用以下命令检查单个文件的恢复状态:

aws s3api head-object --bucket $BUCKET_NAME --key "path/to/glacier-file"

如果返回结果里包含Restore: ongoing-request="false", expiry-date="...",就说明这个文件已经恢复完成,可以下载了。

3. 执行复制命令

等所有需要的文件恢复完成后,用带--recursive的原命令即可复制所有内容:

aws s3 cp s3://${s3Location} ${localDumpPath} --recursive

如果想确保只尝试下载已恢复的GLACIER文件,也可以加上--force-glacier-transfer参数,它会允许下载已恢复的归档对象:

aws s3 cp s3://${s3Location} ${localDumpPath} --recursive --force-glacier-transfer

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 10:42:40