小编Jug*_*hal的帖子

复制 S3 文件的更快方法

我试图将大约 5000 万个文件和 15TB 的总大小从一个 s3 存储桶复制到另一个存储桶。有 AWS CLI 选项可以快速复制。但就我而言,我想放置一个过滤器和日期范围。于是想到用boto3写代码。

源桶输入结构:

Folder1
    File1 - Date1
    File2 - Date1
Folder2
    File1 - Date2
    File2 - Date2
Folder3
    File1_Number1 - Date3
    File2_Number1 - Date3
Folder4
    File1_Number1 - Date2
    File2_Number1 - Date2
Folder5
    File1_Number2 - Date4
    File2_Number2 - Date4
Run Code Online (Sandbox Code Playgroud)

因此,目的是使用日期范围(Date2 到 Date4)从每个文件夹中复制以“File1”开头的所有文件。date(Date1, Date2, Date3, Date4) 是文件修改日期。

输出将具有日期键分区,我使用 UUID 来保持每个文件名的唯一性,因此它永远不会替换现有文件。因此,具有相同日期(文件的修改日期)的文件将位于同一文件夹中。

目标桶会有输出:

Date2
    File1_UUID1
    File1_Number1_UUID2
Date3
    File1_Number1_UUID3
Date4
    File1_Number2_UUID4
Run Code Online (Sandbox Code Playgroud)

我已经使用 boto3 API 和 AWS 胶水编写了代码来运行代码。但是 boto3 API 每天复制 50 万个文件。

编码:

s3 = boto3.resource('s3', region_name='us-east-2', …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 boto amazon-web-services aws-cli boto3

3
推荐指数
1
解决办法
2004
查看次数

标签 统计

amazon-s3 ×1

amazon-web-services ×1

aws-cli ×1

boto ×1

boto3 ×1