首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用文件索引将文件从S3存储桶复制到本地计算机

使用文件索引将文件从S3存储桶复制到本地计算机
EN

Stack Overflow用户
提问于 2016-10-30 03:34:01
回答 2查看 1.2K关注 0票数 0

我需要将文件从S3存储桶中的许多子目录复制到我的本地计算机。文件名是自动生成的,如果不先使用ls就很难获得,但我知道目标文件总是按照日期创建顺序在子文件夹中的第二个文件。

有没有办法通过索引来引用s3存储桶子文件夹中的文件?

我正在设想用aws cli来做这件事,尽管我对其他建议持开放态度。

EN

回答 2

Stack Overflow用户

发布于 2016-10-30 04:10:29

我不知道在S3中有什么方法可以列出第二个最旧的对象,而不是列出位于给定前缀的所有对象,然后按日期对该列表进行显式排序。如果你需要这样做,那么这里有一些想法:

  1. 如果只添加(从不删除)对象,则可以在上载对象时使用关键命名约定,使您可以轻松定位第二个最旧的对象,例如0001-xxx,0002-xxx。然后,您可以通过列出前缀为0002的对象来查找第二个最旧的对象。
  2. 在关系型数据库或KV数据库中维护一个独立的对象索引,使您可以在S3层次结构的任何部分轻松定位第二个最旧的对象的S3键。
  3. 使用在对象放置或删除时触发的Lambda函数,该函数枚举了相关“文件夹”中的所有对象,并将第二个最旧对象的键写回同一文件夹中的某种索引对象(或作为已知索引对象上的元数据)。然后,您可以通过获取索引对象的内容(或其元数据)来查找第二个最旧的对象。

选项#2可能是最好的,因为它简单、快速和灵活(如果随着时间的推移,你的应用程序不断变化,你会发现你还需要知道第四个最老的对象,或者第二个最新的对象)。

票数 1
EN

Stack Overflow用户

发布于 2016-10-30 12:09:26

您可以使用此方法获取给定存储桶/路径中的第二个文件的名称:

代码语言:javascript
运行
复制
aws s3api list-objects-v2 --bucket BUCKET-NAME --query 'Contents[1].Key' --output text

这也适用于BUCKET-NAME/PATH

但是,您提到您有许多子目录,因此如果您希望避免执行完整的存储桶列表,则必须知道所有这些子目录的名称。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40322900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档