2

tar.Zファイルのファイルレイアウトを理解しようとしています。(いわゆる.tazファイル。圧縮tarファイル)。

このファイルは、tar -Zオプションを使用するか、unix compressユーティリティを使用して作成できます(結果は同じです)

このファイル構造に関するドキュメントをグーグルで検索しようとしましたが、このファイル構造に関するドキュメントがありません。

これがLZW圧縮ファイルであり、マジックナンバー「1F9D」で始まることは知っていますが、私が理解できるのはそれだけです。誰かがファイルヘッダーか何かについてもっと詳しく教えてください。

このファイルを解凍する方法や、このファイルを処理できるLinuxコマンドについては興味がありません。

知りたいのは内部ファイルの構造/ヘッダー/フォーマット/レイアウトです。前もって感謝します

4

3 に答える 3

3

.Zファイルはcompressを使用して圧縮され、uncompressを使用して解凍できます(または一部のマシンでは、これはuncompress.realと呼ばれます)。この.Zファイルは任意のデータを保持できます。.tar.Zまたは.tazは、compressで圧縮された単なる.tarファイルです。

最初の2バイト(MAGIC_1およびMAGIC_2)は、.Zファイルが実際に.Zファイルであり、誤って同じ拡張子を持つ他のものではないかどうかを確認するために使用されます。これらのバイトはソースにハードコードされています。

3番目のバイトは設定バイトであり、2つの値を保持します。

  • 最上位ビットはブロックモードです。
  • 最後の5ビットは、コードテーブルの最大サイズを示します(コードテーブルはlzw圧縮に使用されます)。

元のコードから:BLOCK_MODE = 0x80; byte3 =(BIT | BLOCK_MODE); BITは12..16のif/elseブロックにあります。

ブロックモードがオンになっている場合、コードテーブルの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ファイルであるため、解凍するように指示する1F9Dマジックナンバーのみが表示されます。

非圧縮の場合、tarファイルヘッダーを読み取ることができます。

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

于 2012-11-04T07:46:15.000 に答える
0

Q:このファイルはtar -Zオプションを使用するか、unix compressユーティリティを使用して作成できます(結果は同じです)

A:はい。「tar-cvfmyfile.tarmyfiles; compress myfile.tar」は、「-Z」を使用するのと同じです。さらに良い選択は、多くの場合「j」です(Zipの代わりにBZipを使用)

Q:tarファイルのレイアウトはどのようになっていますか?

A:多くの参考文献があり、多くの無料の情報源があります。例えば:

Q:Unix圧縮ファイルの形式は何ですか?

A:繰り返しますが、多くの参照があります。サンプルソースコードを簡単に見つけることができます。

.tgz(圧縮されたtarファイル)を作成するには、両方の形式が必要です。最初に解凍してから、解凍する必要があります。「tar」ユーティリティは、自動的に両方を実行します:)

于 2012-11-04T07:47:15.270 に答える