amazon-web-services - 将具有特定扩展名的文件从多个 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_1
... obkect_2
)和cp
/或sync
目标存储桶的源存储桶。以下命令是我在 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/'
推荐阅读
- python - 使用列表格式的数据创建查询
- assembly - Understanding WORD PTR
- ios - 通过不同的视图控制器使用 Realm 时出现 RLMException
- node.js - 快递路线导致404
- hyperlink - 屏蔽列值上的 UI 网格超链接
- batch-file - 批处理文件 - 选择,缩进提示
- angular - 多模块程序无法正常工作
- asp.net-core - 多个外键 EF Core 2.1 代码首先在 DB 中只生成 1 个
- image - GmailApp - 附加内联图像,而不是内联 - 发送带有正文中图像的电子邮件
- javascript - 如何使用不变性助手更新 redux 状态?