将具有特定扩展名的文件从多个S3对象移动到另一个S3存储桶



我有以下S3桶结构:

s3://<bucket_name>/
|---object_1/
|   |---images/
|   |   |---<image_11.jpg>
|   |   |---<image_12.jpg>
|   |---annotation/
|   |   |---<image_11.xml>
|   |   |---<image_12.xml>
|---object_2/
|   |---images/
|   |   |---<image_21.jpg>
|   |   |---<image_22.jpg>
|   |---annotation/
|   |   |---<image_21.xml>
|   |   |---<image_22.xml>

我想将所有的图像和注释文件分别移动到两个单独的S3对象中,这样目标对象结构看起来像:

s3://<bucket_name>/
|---all-images/
|   |---<image_11.jpg>
|   |---<image_12.jpg>
|   |---<image_21.jpg>
|   |---<image_22.jpg>
|---all-annotation/
|   |---<image_11.xml>
|   |---<image_12.xml>
|   |---<image_21.xml>
|   |---<image_22.xml>

问题

我已经尝试了这个StackOverflow问题的解决方案,但它并没有改变S3对象的结构。所有文件都使用文件夹名称(此处为object_1/images/image_11.jpg(进行复制。我希望所有的图像都在一个对象下(这里是all-images/<all_the_jpg_files>(,没有目录结构。如何使用AWS CLI或Sage Maker笔记本实例实现这一点?

步骤1

使用此StackOverflow问题作为参考创建前缀列表。

步骤2

在前缀列表(此处为object_1obkect_2…(和cpsync上迭代源存储桶和目标存储桶。以下命令是我在Sage Maker笔记本实例上使用的命令。

!/bin/bash  
for label in list_of_prefixes:
!aws s3 cp --recursive 's3://<bucket_name>/f"{label}"/images/' 's3://<bucket_name>/all-images/'

相关内容

  • 没有找到相关文章

最新更新