使用 CURL 或 WGET 读取 Gzip 文件页脚

Reading Gzip File Footer with CURL or WGET

我在网络服务器中有一个 gzip 文件。只有当有足够的磁盘 space 来解压缩文件时,我才想下载文件。有没有可能知道 下载文件前的解压大小?

解压缩的大小编码在 gzip 文件的页脚中[1]。我们可以通过以下命令提取解压后的大小

gzip -l

但是,需要下载文件。如果我知道解压后的大小,我想避免文件下载。

您可以使用 HTTP Range header 破解您的方法,但它需要很多 http 请求并且您的服务器需要接受 Range header.

  1. 使用 HEAD 方法发送第一个请求,计算总文件大小 content-length
  2. 发送带有 Range header 的第二个请求以获取文件的最后 4 个字节。计算这些字节以了解文件大小
  3. 如果磁盘上有足够的可用空间(file-size + 未压缩的大小),请下载完整文件。