tar.Z文件格式,结构,头文件

时间:2012-11-04 07:38:23

标签: compression tar lzw

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

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

我试图谷歌一些关于这个文件结构的文档 但没有关于此文件结构的文档。

我知道这是LZW压缩文件并以 它的幻数“1F 9D”,但这就是我能想到的。 有人请告诉我有关文件标题的更多详细信息 任何东西。

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

我想知道的是内部文件结构/标题/格式/布局。 提前谢谢你

3 个答案:

答案 0 :(得分:1)

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

未压缩时,您可以读取tar文件头:

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

答案 1 :(得分:1)

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

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

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

  • 最重要的一点是阻止模式。
  • 最后5位表示代码表的最大大小(代码表用于lzw压缩)。

从原始代码:BLOCK_MODE = 0x80;字节3 =(BIT | BLOCK_MODE);和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的第一个字节。文件)。

答案 2 :(得分:0)

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

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

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

答:有许多参考资料,以及免费提供的资源。例如:

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

答:再次:许多参考文献;很容易找到示例源代码:

Fot a .tgz(压缩的tar文件)你需要两种格式:你必须首先解压缩它,然后解压缩它。 “tar”实用程序将为您自动执行以下操作:)