linux - 多个 GZip 文件的快速连接

标签 linux unix gzip compression

我有 gzip 文件列表:

file1.gz
file2.gz
file3.gz

有没有办法将这些文件连接或压缩成一个 gzip 文件 无需解压缩

在实践中,我们将在 Web 数据库 (CGI) 中使用它。网络将在哪里接收 来自用户的查询并根据查询列出所有文件并呈现它们 在批处理文件中返回给用户。

最佳答案

使用 gzip 文件,您可以简单地将文件连接在一起,如下所示:

cat file1.gz file2.gz file3.gz > allfiles.gz

根据 gzip RFC ,

A gzip file consists of a series of "members" (compressed data sets). [...] The members simply appear one after another in the file, with no additional information before, between, or after them.

请注意,这与构建连接数据的单个 gzip 文件并不完全相同;除其他外,所有原始文件名都被保留。但是,gunzip 似乎将其视为等同于串联。

由于现有工具通常会忽略附加成员的文件名标题,因此很难从结果中提取单个文件。如果您希望这成为可能,请改为构建一个 ZIP 文件。 ZIP 和 GZIP 都使用 DEFLATE 算法进行实际压缩(ZIP 支持一些其他压缩算法以及一个选项 - 方法 8 对应于 GZIP 的压缩);区别在于元数据格式。由于元数据是未压缩的,因此剥离 gzip header 并添加 ZIP 文件 header 和中央目录记录非常简单。引用 gzip format specificationZIP format specification .

关于linux - 多个 GZip 文件的快速连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8005114/

相关文章:

c# - 使用 mkbundle 从 C# 源代码创建 Linux 可执行文件时出现问题

linux - CPanel 电子邮件管道到 linux 中的 shell 脚本,语法

linux - 无法从jsp网页运行unix代码

git - 为什么两次压缩相同的内容会得到两个具有不同 SHA1 的文件?

linux - SVN 命令不适用于 Cygwin

linux - Git 克隆失败 : Server Certificate Verification Failed

ubuntu - 如何修复 "struct ' FILE' has no member named '__pad'"在 ubuntu-18.10 中使用 $make in apue.3e 时出错

bash - `watch docker ps --format` 的优雅方式是什么?

IIS 7.5 静态内容压缩(不一致)

iphone - 如何在 iPhone 上解压缩 gzip 文件并将其写入未压缩的文件