4

3 つのシナリオ(以下を参照)で適切な機能を経験しているため、正しい.tarファイル形式が何であるかは不明です。

.tar私が取り組んできた仕様に基づいて、magicフィールド (ustar) は null で終わる文字列であり、versionフィールドは末尾に null がない 8 進数です。

ただし.tar、サーバーで見つけたいくつかのファイルを確認したところ、magicandversionフィールドの異なる実装が見つかりました。おそらく、システムがこれらのフィールドを無視するため、3 つすべてが適切に機能しているようです。

次の例で、単語ustarrootの間の異なる (3) バイトを参照してください>>

シナリオ 1 ( 20 20 00):

 000000F0      00 00 00 00 | 00 00 00 00 | 00 00 00 00      ............
 000000FC      00 00 00 00 | 00 75 73 74 | 61 72 20 20      .....ustar  
 00000108      00 72 6F 6F | 74 00 00 00 | 00 00 00 00      .root.......
 00000114      00 00 00 00 | 00 00 00 00 | 00 00 00 00      ............

シナリオ 2 ( 00 20 20):

 000000F0      00 00 00 00 | 00 00 00 00 | 00 00 00 00      ............
 000000FC      00 00 00 00 | 00 75 73 74 | 61 72 00 20      .....ustar. 
 00000108      20 72 6F 6F | 74 00 00 00 | 00 00 00 00      root.......
 00000114      00 00 00 00 | 00 00 00 00 | 00 00 00 00      ............

シナリオ 3 ( 00 00 00):

 000000F0      00 00 00 00 | 00 00 00 00 | 00 00 00 00      ............
 000000FC      00 00 00 00 | 00 75 73 74 | 61 72 00 00      .....ustar..
 00000108      00 72 6F 6F | 74 00 00 00 | 00 00 00 00      .root.......
 00000114      00 00 00 00 | 00 00 00 00 | 00 00 00 00      ............

正しいフォーマットはどれですか?

4

2 に答える 2

1

Fedora 18 で次のコマンドを実行すると:

tar --format=posix -cvf testPOSIX.tar test.txt

ustar\0 (0x757374617200) という POSIX tar ファイル形式があります。

そうでなければ、これを実行すると:

tar --format=gnu -cvf testGNU.tar test.txt

次の GNU tar ファイル形式があります: ustar 0x20 0x20 0x00 (0x7573746172202000) (古い gnu 形式)

/usr/share/magic ファイルから:

# POSIX tar archives
257 string      ustar\0     POSIX tar archive
!:mime  application/x-tar # encoding: posix
257 string      ustar\040\040\0 GNU tar archive
!:mime  application/x-tar # encoding: gnu

0x20 は 8 進数で 40 です。

また、次のように16進コードを編集しようとしました:

00 20 20

ただし、tarは正しく機能しました。問題なく test.txt を抽出しました。

しかし、16進コードを次のように編集しようとしたとき:

00 00 00

タールが認識されませんでした。

したがって、私の結論は、正しい形式は次のとおりです。

20 20 00
于 2013-10-18T12:53:13.663 に答える