【问题标题】:tar.Z file format, structure, headertar.Z 文件格式、结构、标题
【发布时间】:2012-11-04 07:38:22
【问题描述】:

我正在尝试找出文件的布局 tar.Z 文件。 (所谓的 .taz 文件。压缩的 tar 文件)。

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

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

我知道这是 LZW 压缩文件,开头是 它的神奇数字“1F 9D”,但这就是我能弄清楚的。 有人请告诉我有关文件头的更多详细信息或 任何东西。

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

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

【问题讨论】:

    标签: compression tar lzw


    【解决方案1】:

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

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

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

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

    来自原代码:BLOCK_MODE=0x80;字节3=(位|块模式);并且 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】:

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

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

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

      【讨论】:

      • 谢谢,但我想知道 1F 9D 之后是否还有其他文件头。事实证明,在 3 个字节(2 个字节的魔法和 1 个字节的最大代码位选项)之后,它只是纯 LZW 代码。
      【解决方案3】:

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

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

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

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

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

      A:再说一遍:很多参考资料;很容易找到示例源代码:

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

      【讨论】:

        猜你喜欢
        • 2023-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多