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

AWS S3批量转移40000个文件夹至其他存储桶的方法咨询

批量转移AWS S3文件夹的可行方案

方案一:修正AWS CLI配置并使用批量转移脚本

  1. 排查CLI配置问题

    • 执行aws configure list检查当前配置的Access Key、Secret Key、区域是否匹配目标桶所在区域,若不匹配可在命令中添加--region <目标区域>参数,或通过aws configure重新配置。
    • 若使用临时凭证,需确保配置了aws_session_token,可通过aws configure set aws_session_token <你的会话令牌>完成配置,或通过环境变量AWS_SESSION_TOKEN传递。
  2. 批量转移脚本示例
    先准备一个文本文件folders_to_move.txt,每行写入一个待转移文件夹的前缀(例如docs/2023/),再用以下循环执行转移:

    while read folder; do
      # 递归移动文件夹下所有对象
      aws s3 mv s3://源存储桶名/$folder s3://目标存储桶名/$folder --recursive
      # 可选:添加日志记录进度
      echo "已完成文件夹 $folder 的转移" >> transfer_log.txt
    done < folders_to_move.txt
    

    若需要更高效的增量同步(仅转移新增/变更文件),可替换为s3 sync命令:

    while read folder; do
      aws s3 sync s3://源存储桶名/$folder s3://目标存储桶名/$folder
      # 同步完成后删除源文件夹(按需选择)
      aws s3 rm s3://源存储桶名/$folder --recursive
    done < folders_to_move.txt
    

方案二:使用Python boto3脚本自定义转移逻辑

如果CLI脚本无法满足复杂需求,用boto3可实现更精准的控制:

import boto3

source_bucket = "你的源存储桶名"
target_bucket = "你的目标存储桶名"
# 可从txt文件读取文件夹列表,示例直接写入
folders_to_move = ["folder_a/", "folder_b/", "folder_c/"]

s3_client = boto3.client("s3")

for folder_prefix in folders_to_move:
    # 分页列出当前文件夹下的所有对象
    paginator = s3_client.get_paginator("list_objects_v2")
    page_iterator = paginator.paginate(Bucket=source_bucket, Prefix=folder_prefix)
    
    for page in page_iterator:
        if "Contents" not in page:
            continue
        # 逐个复制并删除源对象
        for obj in page["Contents"]:
            obj_key = obj["Key"]
            # 复制对象到目标桶
            s3_client.copy_object(
                Bucket=target_bucket,
                Key=obj_key,
                CopySource=f"{source_bucket}/{obj_key}"
            )
            # 删除源对象(按需选择)
            s3_client.delete_object(Bucket=source_bucket, Key=obj_key)

可在脚本中添加错误捕获、重试逻辑,或结合tqdm库实现进度可视化。

方案三:使用AWS S3 Batch Operations

针对40000个文件夹的大规模任务,S3 Batch Operations是更省心的托管式方案:

  1. 准备CSV文件,每行写入源对象的完整键(例如源存储桶名/folder1/file.jpg),或仅写入文件夹前缀(需在任务配置中添加前缀筛选规则)。
  2. 登录AWS控制台,进入S3服务的Batch Operations页面,创建新任务。
  3. 选择任务类型为Copy,指定源桶、目标桶,上传准备好的CSV对象列表。
  4. 配置错误处理策略(例如跳过失败对象、将失败记录存入指定桶),设置任务优先级后启动。
    S3会自动处理任务的并发执行、重试和状态追踪,无需维护本地脚本运行环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 03:12:14