tbzから単一のファイルを抽出する方法

tbzから単一のファイルを抽出する方法

次のアーカイブディレクトリがあります:

itunes20140618.tbz

そこから次のファイルを 1 つ抽出します:

itunes20140618/video

どうすればいいでしょうか?

今のところ、私は

$ bzip2 -d /tmp/itunes20140618.tbz 

しかし、すべての tar ディレクトリが作成されるようです。単一のビデオ ファイルだけを抽出するにはどうすればよいでしょうか?

現在、tar で 1 つのファイルを抽出すると、約 1 分かかり、その後 tar アーカイブの読み取りが完了するまでさらに 20 分間「ハング」します。これを改善する方法はありますか?

答え1

tar -xvjf itunes20140618.tbz itunes20140618/video

今回のケースではこれで完了ですが、さらにサポートが必要な場合は、次の手順に従ってください。

info tar

特定のアーカイブ メンバーを抽出するには、 で表示される正確なメンバー名を引数として指定します--list (-t)。以前にアーカイブに配置したファイルの 1 つcollection.tar (たとえばblues) を誤って削除した場合は、アーカイブの構造を変更せずにアーカイブから抽出できます。その内容は、削除した元のファイルと同一になりますblues

まず、ディレクトリ内にいることを確認しpractice、ディレクトリ内のファイルを一覧表示します。次に、ファイル を削除しblues、ディレクトリ内のファイルを再度一覧表示します。

blues次のようにして、アーカイブ ファイル `collection.tar' からメンバーを抽出できます。

 $ tar --extract --file=collection.tar blues

bluesディレクトリ内のファイルを再度一覧表示すると、ファイルが元の権限、データの変更時刻、所有者とともに復元されている ことがわかります 。(これらのパラメータは、ファイルを最初にアーカイブに配置したときのパラメータと同一になります。ただし、ファイル システムからファイルを削除する前に行った変更は、アーカイブ メンバーには反映されません。) アーカイブ ファイル はcollection.tar、 を解凍する前と同じです。 をblues実行してこれを確認できます。tar--list (-t)

答え2

、 、 などのアーカイブは、.zip多数のファイルが束ねられて圧縮されたものから構成されます。アーカイブは多数のファイルが束ねられて構成されますが、tar 形式には圧縮が含まれていません。、、ファイルは、単一の圧縮ファイルです。、などは圧縮されたアーカイブです。は、 の代わりに使用されることがあるサフィックスです。これは、の代わりに が使用されることがあるのと同じです。.rar.7z.tar.gz.bz2.xz.tar.gz.tar.bz2.tbz.tar.bz2.tgz.tar.gz

bzip2 -d /tmp/itunes20140618.tbzはファイルを解凍します。圧縮されていない tar アーカイブが残ります。 はbzip2tar を作成しません。与えられたものを解凍します。圧縮された tar が渡されるので、出力は圧縮されていない tar になります。結果のファイルは を使用して untar できますtar -xf /tmp/itunes20140618.tar。1 つのファイルだけを抽出する場合は を使用しますtar -xf /tmp/itunes20140618.tar itunes20140618/video

Linux、FreeBSD、MINIX3、OSX 上の比較的最近のバージョンの tar は、圧縮されたアーカイブを自動的に検出するため、アーカイブで使用される圧縮を気にせずに tar を呼び出すことができます。

tar xf itunes20140618.tbz itunes20140618/video

古いバージョンの tar や、OpenBSD、Solaris、BusyBox を搭載した Linux などの今日の多くのシステムでは、bzip2オプションで明示的に指示する必要がある場合でも、少なくとも内部で呼び出すことができます-j

tar -xjf itunes20140618.tbz itunes20140618/video

関連情報