【问题标题】:How can I download all files from Amazon S3 that are in a folder that was created last month?如何从 Amazon S3 下载上个月创建的文件夹中的所有文件?
【发布时间】:2015-08-14 10:58:31
【问题描述】:

如何从 Amazon S3 下载从上个月到现在创建的文件夹?

我有这个使用 boto 的代码:

for key in bucket.list():
   if last_month < dateutil.parser(key.last_modified).month:
      key.get_contents_to_filename(local_path + key.name)

问题是循环需要很长时间,因为它正在比较文件夹中的每个文件。我只想比较文件夹时间戳。

如果有更好的方法使用 AWS CLI。

【问题讨论】:

  • 嗯把你的搜索目录改成时间戳?
  • 你有没有计时,或者你只是认为它会很慢?
  • 不,但确实需要很长时间.. 我有一堆文件夹,每个文件夹包含 10 - 30 个文件。
  • 您是否尝试过使用 AWS CLI?如果您的对象命名方案包含该 s3 命​​令,您可以像目录结构一样导航 S3 存储桶。只需尝试执行“aws s3 ls s3:// 并查看它返回的内容。

标签: python amazon-s3 boto aws-cli


【解决方案1】:

这是不可能的。

Amazon S3 不使用目录。它是平面存储结构。

为了呈现目录的外观,路径被添加到对象(文件)的键(文件名)之前。

例如,一个名为cat.jpg 的对象存储在一个名为animals 的目录中,实际上其键(文件名)为animals/cat.jpg

由于目录不存在,因此无法从目录中检索属性。

(顺便说一句,有一个“公共前缀”的概念,在引用多个文件时可以像目录一样工作,但它仍然不是一个实际的目录。)

【讨论】:

  • 是的,我认为你是对的。我刚刚所做的是获取目录中的所有文件夹并获取文件中的 lastModified 日期。我只是将 lastModified 日期视为文件夹的时间戳。
猜你喜欢
  • 2019-05-13
  • 2010-12-28
  • 1970-01-01
  • 1970-01-01
  • 2017-01-06
  • 1970-01-01
  • 2017-02-26
  • 1970-01-01
  • 2019-11-26
相关资源
最近更新 更多