tar.bz2 を .bz2 に変換するにはどうすればいいですか?

tar.bz2 を .bz2 に変換するにはどうすればいいですか?

圧縮された tar.bz2 のファイルがあり、それを .bz2 に変換したいのですが、これを 1 回で実行するコマンドはありますか?

以下のことを試しましたが、うまくいきませんでした。

 tar -xvjf US.tar.bz2
 US

 bzip2: Compressed file ends unexpectedly;
         perhaps it is corrupted?  *Possible* reason follows.
 bzip2: Inappropriate ioctl for device
         Input file = (stdin), output file = (stdout)

 It is possible that the compressed file(s) have become corrupted.
 You can use the -tvv option to test integrity of such files.

 You can use the `bzip2recover' program to attempt to recover
 data from undamaged sections of corrupted files.

 tar: Unexpected EOF in archive
 tar: Unexpected EOF in archive

追伸

以下も試してみました:

bunzip2 -c < US.tar.bz2 | gzip -c > us.bz2

その結果は次のようになります。

bunzip2: Compressed file ends unexpectedly;
    perhaps it is corrupted?  *Possible* reason follows.
bunzip2: Inappropriate ioctl for device
    Input file = (stdin), output file = (stdout)

It is possible that the compressed file(s) have become corrupted.
You can use the -tvv option to test integrity of such files.

You can use the `bzip2recover' program to attempt to recover
data from undamaged sections of corrupted files.

答え1

tarは、他のファイルをまとめて保存するが、圧縮しない zip ファイルに似ています。 bzip2ファイルは圧縮されますが、一度に 1 つだけです。 ファイルは、.tar.bz2複数のファイルが 1 つのファイルに格納されtar、その後 zip 圧縮されたことを示している可能性があります。最初に tar 圧縮せずに、それらをまとめて zip 圧縮することはできません。

エラーは.tar.bz2ファイルが破損しているために発生します。 正常に動作するファイルの例を以下で参照してください。

$ ls
test_file.tar.bz2
$ tar xvjf test_file.tar.bz2 
test_file
$ ls
test_file  test_file.tar.bz2

編集


上記の例では、tar には 1 つのファイルしかありませんでした。そのフォルダーだけを zip に圧縮したい場合は、次のようにします。

$ bzip2 test_file
$ ls
test_file.bz2

関連情報