.bz2 と .tar.bz2 ファイルの違い

.bz2 と .tar.bz2 ファイルの違い

ファイルが.bz2または.tar.bz2(ファイル拡張子なし)を使用して圧縮されていることを確認し、それに応じて解凍する必要があります。このコマンドを使用しましたが、file.bz2と.tar.bz2についても同じ結果が出ました。 .bz2 および .tar.bz2 ファイルを明確に識別する方法を提案します。

答え1

ファイルを実行し、bzcat結果を次にパイプしますfile

$ bzcat somefile.bz2 | file -
/dev/stdin: data               # or whatever; this is not a .tar.bz2

$ bzcat otherfile.bz2 | file -
/dev/stdin: POSIX tar archive  # this *is* a .tar.bz2

答え2

file気にしない:そうだと思います。滞在、いいえファイル名

tar形式の内容は、ファイルを解凍しなければ表示されません。

答え3

file-zサポートまたはオプションを含むバージョンがある場合は、-Z圧縮ファイルの内部を調べてその内容を把握できます。

どちらのオプションも POSIX 仕様の一部ではありません。文書

ただし、この-zオプションはfile少なくとも2000年代初めから長い間BSDコマンドに存在していました(私のシステムの変更ログには2003年以前には何も表示されません)。 -Z2015年6月に追加されました。fileBSDは現在、ほとんどの(すべて?)Linuxディストリビューション、* BSD、およびMac OSXを含む多くのシステムで使用されています。

からman file

-z、--圧縮解除

圧縮ファイルの内部を見てください。

-Z, --圧縮解除-noreport

圧縮ファイルの内部を表示しようとしますが、圧縮ではないコンテンツに関する情報のみを報告します。

たとえば、

# make a .tar.bz2 file
tar cfj test.tar.bz2 *

# make a .bz2 file
echo junk | bzip2 -c > junk.bz2

# try to fool `file`
cp test.tar.bz2 test.bz2
cp junk.bz2 junk.tar.bz2

echo "file -z:"
file -z *.bz2

echo
echo

echo "file -Z:"
file -Z *.bz2

出力:

file -z:
junk.bz2:     ASCII text (bzip2 compressed data, block size = 900k)
junk.tar.bz2: ASCII text (bzip2 compressed data, block size = 900k)
test.bz2:     POSIX tar archive (GNU) (bzip2 compressed data, block size = 900k)
test.tar.bz2: POSIX tar archive (GNU) (bzip2 compressed data, block size = 900k)


file -Z:
junk.bz2:     ASCII text
junk.tar.bz2: ASCII text
test.bz2:     POSIX tar archive (GNU)
test.tar.bz2: POSIX tar archive (GNU)

関連情報