【问题标题】:Unzip file on ec2 and save it on S3?在 ec2 上解压缩文件并将其保存在 S3 上?
【发布时间】:2014-05-22 14:17:42
【问题描述】:

我有一个大约 20 GB 大的 zip 文件,其中包含大约 400,000 张图像,我可以使用 wget 将其移动到我的 EC2 实例。现在我想解压缩文件并将它们保存到我的 S3。

如果我不需要先将它们解压缩到 ec2 就好了。我可以通过 SSH 以某种方式使用 unzip -options 将每个文件提取到 S3 吗?

我找到了类似https://stackoverflow.com/a/9722141/2335675 的答案。但我不明白他所说的“将其解压缩到 S3”的实际含义。我可以在通过 SSH 连接到我的 EC2 实例时执行此操作吗?亚马逊是否有某种内置解压缩命令将其提取到 s3 而不是当前服务器?

我可以看到其他人问过这个问题,但我无法找到如何实际操作的直接答案。

【问题讨论】:

  • stackoverflow.com/a/9722141/2335675 已回答您的问题。 S3 只是存储。 S3 无法自行解压,因为它是静态的。所以你必须在 ec2 上解压
  • 你读过我的帖子吗?我在我的帖子中链接到那个答案,我指出它没有描述如何实际使用 ec2 解压缩它并使用 unzip ssh 命令将 S3 作为目标。它只是说“使用 ec2 解压缩”,这不是我关于如何实际执行此操作的问题的答案。
  • unzip 是命令,如果你不知道如何使用它,man unzip 会给你指导。比如scp your.zip.file user@ec2.server:.; ssh user@ec2.server "unzip your.zip.file",这就是你要的答案吗?
  • 人们说“解压并写入 S3”。我的问题是我是否可以解压缩并将解压缩的目标设置为 S3。请阅读。
  • S3 是存储,它应该被 ec2 挂载,所以你看到 S3 是 ec2 中的文件系统之一。

标签: amazon-web-services amazon-ec2 amazon-s3


【解决方案1】:
  • 第一个解决方案:
    1. 使用 s3fs 在 ec2 上安装 s3。
    2. 将文件解压到挂载点。
  • 第二种解决方案:
    1. 使用python及其aws库boto
    2. 使用zipfile将一个文件解压到临时位置
    3. 并使用boto将其上传到s3,
    4. 然后删除临时文件。
    5. 完成后转到 2

【讨论】:

  • 对于它的价值,您实际上可以通过使用 boto 和 python 的 zipfile 模块来完成内存中的所有文件 IO:for subfile in zipf.namelist(): k = Key(bucket) k.key = PUBLIC_PREFIX+subfile k.set_contents_from_string(zipf.read(subfile))
【解决方案2】:

我是如何解决的:

  1. 我在我的 EC2 实例上创建了一个二级卷,以便为文件 x3 左右提供空间,还包括用于提取文件的空间。请参阅此处的指南:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-add-volume-to-instance.html
  2. 通过 SSH 连接到 EC2 实例,我使用unzip命令将文件解压缩到新卷。
  3. 我使用 aws s3 cp myfolder s3://mybucket/myfolder --recursive 将我的所有文件移动到我的 S3 存储桶中。
  4. 我删除了我的临时卷及其上的所有文件。

一切都是使用 SSH 完成的。不需要脚本或编程。

请记住,您需要使用sudo 才能获得执行许多操作的权限。

【讨论】:

  • 将 400,000 个文件从 EC2 移动到 S3 需要多少成本?
猜你喜欢
  • 2016-03-31
  • 2012-01-08
  • 2013-01-07
  • 2014-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-11
  • 2011-04-17
相关资源
最近更新 更多