2

我想弄清楚 tar.Z 文件的文件布局。(所谓的 .taz 文件。压缩的 tar 文件)。

该文件可以使用 tar -Z 选项或使用 unix compress 实用程序生成(结果相同)

我试图用谷歌搜索一些关于这个文件结构的文档,但是没有关于这个文件结构的文档。

我知道这是 LZW 压缩文件,并以它的幻数“1F 9D”开头,但这就是我能弄清楚的全部。有人请告诉我有关文件头或任何内容的更多详细信息。

我对如何解压缩这个文件不感兴趣,或者什么 linux 命令可以处理这个文件。

我想知道是内部文件结构/标题/格式/布局。先感谢您

4

3 回答 3

3

.Z 文件使用 compress 压缩,并且可以使用 uncompress 解压缩(或者在某些机器上,这称为 uncompress.real)。这个 .Z 文件可以保存任何数据。.tar.Z 或 .taz 只是一个用 compress 压缩的 .tar 文件。

前 2 个字节(MAGIC_1 和 MAGIC_2)用于检查 .Z 文件是否真的是 .Z 文件,而不是意外具有相同扩展名的其他文件。这些字节在源代码中是硬编码的。

第三个字节是设置字节,包含 2 个值:

  • 最高有效位是块模式。
  • 最后5位表示码表的最大尺寸(码表用于lzw压缩)。

从原始代码:BLOCK_MODE=0x80; byte3=(位|块模式); 并且 BIT 在 if/else 块中,它是 12..16。

如果打开了块模式,则在代码表中的第 256 位将添加一个实体(请记住 0..255 用值 0..255 填充),这将包含 CLEAR 符号。因此,每当从文件的数据流中获取 CLEAR 符号时,必须将代码表恢复为其初始状态(因此它只有 0..256)。

最大代码大小表示代码表可以包含的位数。当达到最大值时,不再有实体添加到代码表中。所以如果最大码长为0b00001100,则表示码表只能容纳12位,所以最多2^12=4096个实体。

compress 可能使用的最大数量是 16 位。这意味着此设置字段中有 2 位未使用。

在这 3 个字节之后,原始 LZW 数据开始。因为 LZW 表从 9 位开始,第 4 个字节将与输入的第一个字节相同(如果是 .tar.Z 文件或 taz 文件,此字节将是未压缩 .tar 的第一个字节文件)。

于 2016-02-23T11:04:12.223 回答
1

tar.Z 文件只是一个压缩的 tar 文件,因此您只会找到告诉您解压缩它的 1F 9D 幻数。

解压缩后,您可以读取 tar 文件头:

http://www.fileformat.info/format/tar/corion.htm

于 2012-11-04T07:46:15.000 回答
0

问:这个文件可以用 tar -Z 选项或使用 unix compress 工具生成(结果相同)

答:是的。“tar -cvf myfile.tar myfiles; compress myfile.tar”相当于使用“-Z”。更好的选择通常是“j”(使用 BZip,而不是 Zip)

问:tar 文件的布局是什么?

A:有很多参考资料,还有很多免费的资源。例如:

问:Unix 压缩文件的格式是什么?

A: 再次:许多参考资料;很容易找到示例源代码:

对于 .tgz(压缩的 tar 文件),您需要两种格式:您必须先解压缩它,然后再解压缩它。“tar”实用程序会自动为您完成这两项工作:)

于 2012-11-04T07:47:15.270 回答