从 zip 存档中提取 gzip 文件
Extract gzip files from zip archive
我们正在创建一个 Web 服务,您可以在其中上传一个 zip 文件(有时相当大 100MB 到 1GB),然后通过 http 提供其内容。
内容使用静态 gzip 压缩提供。据我了解,gzip 本质上是一些 headers + deflate。 Zip 也是一些 meta-info + 多个可选的压缩流,其中一些通常也是压缩的。
我担心我们在那里进行不必要的往返。解压 zip - 然后用 gzip 压缩每个文件。从理论上讲,我们可以将 zip 分成 deflate 块,添加一些 headers,瞧,我们有 .gzip 压缩文件,而不进行实际压缩,但这听起来像其他人已经做过的事情。所以我的问题是:
是否有一些用于 Linux 的命令行工具或用于 Ruby/Node.js/C++ 的库,给定 .zip 文件将创建一个文件夹,其中包含其内容以及 .gzipped这些内容的版本而不进行不必要的重新压缩?
免责声明,我没有审查或测试它,zip2gz
是一个 Python 项目,发布在 github 上,用于从 ZIP 文件中提取压缩数据 blob 而无需解压缩。特别是,对于使用“deflate”压缩存储的文件“它将获取原始的 deflate 数据并在其周围打一个 gzip header 和页脚 ”。
将代码翻译成另一种语言应该很简单,除了 import zipfile
依赖项可能必须重新映射到目标语言中的 zip
library/support(尽管实际使用的只有一部分是关于 ZIP headers 和中央目录,而不是任何 un/compression).
对于在没有 re/compressing 且没有任何外部库的情况下进行反向转换(从 gzip 到 single-entry zip 文件)的 C 示例,请参阅 Mark Adler 的 answer to Add .gz file to .zip archive without decompressing and re-compressing?。
我们正在创建一个 Web 服务,您可以在其中上传一个 zip 文件(有时相当大 100MB 到 1GB),然后通过 http 提供其内容。
内容使用静态 gzip 压缩提供。据我了解,gzip 本质上是一些 headers + deflate。 Zip 也是一些 meta-info + 多个可选的压缩流,其中一些通常也是压缩的。
我担心我们在那里进行不必要的往返。解压 zip - 然后用 gzip 压缩每个文件。从理论上讲,我们可以将 zip 分成 deflate 块,添加一些 headers,瞧,我们有 .gzip 压缩文件,而不进行实际压缩,但这听起来像其他人已经做过的事情。所以我的问题是:
是否有一些用于 Linux 的命令行工具或用于 Ruby/Node.js/C++ 的库,给定 .zip 文件将创建一个文件夹,其中包含其内容以及 .gzipped这些内容的版本而不进行不必要的重新压缩?
免责声明,我没有审查或测试它,zip2gz
是一个 Python 项目,发布在 github 上,用于从 ZIP 文件中提取压缩数据 blob 而无需解压缩。特别是,对于使用“deflate”压缩存储的文件“它将获取原始的 deflate 数据并在其周围打一个 gzip header 和页脚 ”。
将代码翻译成另一种语言应该很简单,除了 import zipfile
依赖项可能必须重新映射到目标语言中的 zip
library/support(尽管实际使用的只有一部分是关于 ZIP headers 和中央目录,而不是任何 un/compression).
对于在没有 re/compressing 且没有任何外部库的情况下进行反向转换(从 gzip 到 single-entry zip 文件)的 C 示例,请参阅 Mark Adler 的 answer to Add .gz file to .zip archive without decompressing and re-compressing?。