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