0

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

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

在此处输入图像描述

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

tar -cvf HTML.tar HTML
gzip HTML.tar

这会生成一个 tar-ed 和压缩文件,称为HTML.tar.gz

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

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

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

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

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

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

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

4

1 回答 1

0

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

关于您的评论aws s3 sync“可能需要很长时间才能通过管道泵送数百万个文件”,如果您尚未在 EC2 上执行此操作,您应该先压缩文件并将它们推送到 EC2 服务器。您应该在与 S3 存储桶相同的区域中使用 EC2 服务器,这是一种具有10Gbps 网络性能的实例类型,并且 EC2 服务器应该启用了增强联网。这将为您提供与 S3 的最快连接。

于 2016-11-09T13:51:21.103 回答