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

我有 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 specification和 ZIP format specification .

https://stackoverflow.com/questions/8005114/

相关文章:

python - 为什么会发生这个 UnboundLocalError(关闭)?

python - 为什么 `if None.__eq__("a")` 似乎评估为 True(但不完全

python - 如何在Python中检查两个列表是否循环相同

c - 什么是 vdso 和 vsyscall?

c - 为什么这个程序打印 "forked!"4 次?

python - 是否可以将另一个版本的 Python 安装到 Virtualenv?

linux - 如何将我的密码更改为符号链接(symbolic link)目录的真实路径?

linux - 比较 Unix/Linux IPC

linux - linux动态链接器的 "no version information availa

python - 是否可以按降序使用 argsort?