You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何仅通过命令行将S3指定前缀下的文件归档至Glacier

直接用AWS CLI将S3指定前缀文件归档到Glacier的解决方案

刚好碰到过类似的需求,其实AWS CLI本身就支持直接通过命令行完成这个操作,不用依赖生命周期规则或者Python脚本——核心是利用s3 mv/s3 cp结合--storage-class参数,下面给你具体的实现方案:

1. 归档并移除原S3文件(同前缀存储类转换)

如果你想把指定前缀下的文件直接归档到Glacier,同时删除原S3标准存储的文件,可以用这个命令:

aws s3 mv s3://your-source-bucket/your-target-prefix/ s3://your-source-bucket/your-target-prefix/ --recursive --storage-class GLACIER

这里源和目标路径设置为同一个前缀,因为我们的目的是修改文件的存储类,而不是移动到不同位置。加上--recursive会遍历前缀下所有层级的文件,不会漏掉子目录里的内容。

2. 归档但保留原S3文件(复制到Glacier存储类)

如果需要保留原文件的副本,只归档一份到Glacier,可以用s3 cp命令,还可以选择归档到同一个桶或者不同的桶:

# 归档到同一个桶的不同前缀
aws s3 cp s3://your-source-bucket/your-source-prefix/ s3://your-source-bucket/archive-backup/ --recursive --storage-class DEEP_ARCHIVE

# 归档到不同的桶
aws s3 cp s3://your-source-bucket/your-source-prefix/ s3://your-archive-bucket/your-prefix/ --recursive --storage-class GLACIER_IR

进阶:过滤特定文件归档

如果不需要归档前缀下的所有文件,还可以结合--include--exclude参数来过滤,比如只归档.csv格式的文件:

aws s3 mv s3://your-bucket/data/ s3://your-bucket/data/ --recursive --storage-class GLACIER --include "*.csv" --exclude "*"

补充说明

  • --storage-class可选值有多个:GLACIER(标准归档)、GLACIER_IR(即时检索归档)、DEEP_ARCHIVE(深度归档),你可以根据自己的检索时效和成本需求选择。
  • 之所以你在s3 mv文档里没找到明确的示例,是因为这个操作本质是同桶内的存储类转换,文档里更多侧重跨路径/跨桶的移动,但加上--storage-class参数后,就可以实现归档的效果了。

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

火山引擎 最新活动