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

如何在S3中解压.zip和.gz文件并去重迁移至同桶新路径

S3批量解压压缩文件并去重迁移TXT文件方案

前置准备

  1. 确保已安装并配置AWS CLI:运行aws configure,输入你的AWS访问密钥、区域等信息。
  2. 确认你的AWS身份拥有以下权限:s3:GetObject、s3:PutObject、s3:ListBucket。

步骤1:收集已存在的TXT文件名(避免重复处理)

先把loc/路径下已有的TXT文件名单独提取出来,后续用来跳过对应压缩包的处理:

aws s3 ls s3://你的桶名/loc/ --recursive | grep "\.txt$" | awk '{print $4}' | sed 's/loc\///;s/\.txt$//' > existing_txts.txt

这条命令会生成一个existing_txts.txt文件,里面是所有已存在的TXT文件的核心名称(比如abcd)。

步骤2:处理ZIP压缩文件

创建一个bash脚本(比如process_zips.sh),内容如下,替换你的桶名为实际桶名:

#!/bin/bash
BUCKET="你的桶名"

# 遍历所有ZIP文件
aws s3 ls s3://$BUCKET/loc/ --recursive | grep "\.zip$" | awk '{print $4}' | while read ZIP_FILE; do
    # 提取核心文件名(去掉路径和.zip后缀)
    FILE_NAME=$(echo $ZIP_FILE | sed 's/loc\///;s/\.zip$//')
    # 检查该文件对应的TXT是否已存在,不存在则处理
    if ! grep -q "^$FILE_NAME$" existing_txts.txt; then
        # 临时下载ZIP,解压后直接上传TXT到newloc,不保存本地TXT文件
        aws s3 cp s3://$BUCKET/$ZIP_FILE ./temp.zip
        unzip -p temp.zip "$FILE_NAME.txt" | aws s3 cp - s3://$BUCKET/newloc/$FILE_NAME.txt
        # 删除临时ZIP文件
        rm temp.zip
    fi
done

给脚本添加执行权限并运行:

chmod +x process_zips.sh
./process_zips.sh

步骤3:处理GZ压缩文件

同理,创建process_gzs.sh脚本:

#!/bin/bash
BUCKET="你的桶名"

# 遍历所有GZ文件
aws s3 ls s3://$BUCKET/loc/ --recursive | grep "\.gz$" | awk '{print $4}' | while read GZ_FILE; do
    FILE_NAME=$(echo $GZ_FILE | sed 's/loc\///;s/\.gz$//')
    if ! grep -q "^$FILE_NAME$" existing_txts.txt; then
        aws s3 cp s3://$BUCKET/$GZ_FILE ./temp.gz
        gunzip -c temp.gz | aws s3 cp - s3://$BUCKET/newloc/$FILE_NAME.txt
        rm temp.gz
    fi
done

添加权限并运行:

chmod +x process_gzs.sh
./process_gzs.sh

步骤4:迁移已有的TXT文件到newloc

把loc/下已存在的TXT文件复制到newloc/,用--no-clobber避免覆盖已上传的文件:

aws s3 cp s3://你的桶名/loc/ s3://你的桶名/newloc/ --recursive --exclude "*" --include "*.txt" --no-clobber

注意事项

  • 本地磁盘占用:脚本通过管道直接上传解压后的内容,无需保存大体积TXT文件,仅临时存储压缩包,节省本地空间。
  • 批量处理效率:800个大文件处理耗时较长,建议在后台运行脚本,比如nohup ./process_zips.sh &,避免终端断开中断任务。
  • 错误处理:如果需要记录错误,可以在脚本中添加日志输出,比如在循环内加入echo "处理失败: $ZIP_FILE" >> error.log。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 07:28:11