【发布时间】: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,然后解压并解压我的文件以重新创建整个目录结构?
tar 和 gzip 命令不是 S3 CLI API 的一部分,因此我需要找到一种可靠的方法来移动可以包含数百万个文件的目录结构(这可能每天发生一次)。如果不先进行 tar-ing 和压缩,移动和重新创建所有内容会非常缓慢。
注意:仅供参考,当数据编译器运行时,它总是会删除整个旧树并重新生成一个全新的树,从而为所有目录和文件生成全新的 inode。这意味着“增量”副本和同步是不可行的。我每次都需要移动整棵树。
【问题讨论】:
-
你说它重新创建了所有文件,但文件内容真的改变了吗?您可以使用 md5 哈希值进行同步,以使用
aws s3 sync命令检查文件是否已实际更改。 -
是的,现有文件的内容可能会改变。编译器运行时可能会发生三种结果: 1) 可以添加新文件夹和/或文件; 2) 现有的文件夹和/或文件可能会被删除; 3) 现有文件内容可能(并且经常)改变;请记住,“AWS s3 同步”可能需要很长时间才能通过管道传输数百万个文件。
标签: amazon-web-services amazon-s3 aws-cli static-html