【问题标题】:Uncompress tar file hierarchy on AWS S3 using CLI?使用 CLI 在 AWS S3 上解压缩 tar 文件层次结构?
【发布时间】:2017-03-22 19:49:19
【问题描述】:

我在 OSX(或 Linux)上使用 NOUNZ data compiler,它会自动生成大量静态 HTML 文件的目录结构(数十万甚至数百万个文件)。

生成的目录树的简化示例如下所示...

通常,如果我想将整个树移动到远程 Web 服务器,我只需使用以下命令对树进行 tar 和压缩:

tar -cvf HTML.tar HTML
gzip HTML.tar

这会生成一个名为 HTML.tar.gz 的 tar 压缩文件

然后我可以将上述文件通过 FTP 或 SCP 传送到远程 Web 服务器,然后我可以使用以下命令简单地解压缩文件:

gzip -d HTML.tar.gz
tar -xvf HTML.tar

这将导致 Web 服务器上的文件树与本地计算机上的数据编译器生成的文件树完全相同。

问题:我想使用 Amazon Web Services (AWS) 简单存储解决方案 (S3) 来模拟与上述相同的行为。

我的问题:模拟相同(或类似行为)的最佳方法是什么,我可以将整个 tar-ed 和压缩树从本地服务器移动到 AWS S3,然后解压并解压我的文件以重新创建整个目录结构?

targzip 命令不是 S3 CLI API 的一部分,因此我需要找到一种可靠的方法来移动可以包含数百万个文件的目录结构(这可能每天发生一次)。如果不先进行 tar-ing 和压缩,移动和重新创建所有内容会非常缓慢。

注意:仅供参考,当数据编译器运行时,它总是会删除整个旧树并重新生成一个全新的树,从而为所有目录和文件生成全新的 inode。这意味着“增量”副本和同步是不可行的。我每次都需要移动整棵树。

【问题讨论】:

  • 你说它重新创建了所有文件,但文件内容真的改变了吗?您可以使用 md5 哈希值进行同步,以使用 aws s3 sync 命令检查文件是否已实际更改。
  • 是的,现有文件的内容可能会改变。编译器运行时可能会发生三种结果: 1) 可以添加新文件夹和/或文件; 2) 现有的文件夹和/或文件可能会被删除; 3) 现有文件内容可能(并且经常)改变;请记住,“AWS s3 同步”可能需要很长时间才能通过管道传输数百万个文件。

标签: amazon-web-services amazon-s3 aws-cli static-html


【解决方案1】:

S3 不会为您解压缩文件。您必须以您希望 S3 存储它们的状态将文件推送到 S3。aws s3 sync 命令(或基于 MD5 哈希进行增量更新的类似工具)将是您的最佳选择。您可能可以将同步命令拆分为多个并行同步命令。也许每个子目录运行一个进程。

关于您的评论aws s3 sync“可能需要很长时间才能通过管道泵送数百万个文件”,如果您还没有在 EC2 上执行此操作,您应该先压缩文件并将它们推送到 EC2 服务器.您应该使用与 S3 存储桶位于同一区域的 EC2 服务器,实例类型为 10Gbps network performance,并且 EC2 服务器应启用 Enhanced Networking。这将为您提供与 S3 的最快连接。

【讨论】:

  • 这听起来很“实用”,但不像简单的tar-ing、压缩、发送、解压缩、untar-ing 那样干净、简单或高效。必须有比为每个目录拆分 {aws s3 sync} 更好的方法,特别是因为新目录可能会随着每个新编译器的运行而动态显示并且旧目录可能会被删除。我想知道 AWS 是否足够聪明,可以将更多基本的 unix 命令添加到 S3 CLI,以使其更加用户友好和兼容。
  • 您应该能够编写脚本来根据目录生成同步任务。您不需要对目录进行硬编码。它可能不像您希望的那样干净或简单,但是如果您想使用 S3,您将不得不接受所涉及的限制,并停止尝试将其视为 unix 服务器。 S3 只是存储,而不是您所暗示的“服务器”。它无法为您解压缩文件,因为这需要 CPU 使用率,而 S3 不提供。
  • 感谢您的帮助,并且可以看到您的建议可行,但您必须承认这听起来很像 hack,因为缺少一些应该已经存在的简单 CLI 命令。
  • 我不同意。 Cli 命令无法将功能添加到不支持这些功能的服务。 cli 不在 S3 上运行,它在您的服务器上运行,那么它如何向 S3 添加解压缩支持?无论如何,这不是对 AWS 提出投诉或建议的场所。把它带到 AWS 论坛。
  • 嗨,马克。只是为了澄清,CLI 在客户端和服务端都运行。它是一组 RPC。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-04
  • 2023-04-05
  • 1970-01-01
  • 2012-01-08
  • 1970-01-01
  • 2010-11-01
相关资源
最近更新 更多