web-dev-qa-db-ja.com

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

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

iTunes20140618.tbz

それから単一のファイルを抽出したい:

iTunes20140618/video

どうすればいいですか?

これまでのところ、私はやっています

$ bzip2 -d /tmp/iTunes20140618.tbz 

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

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

4
David542
_tar -xvjf iTunes20140618.tbz iTunes20140618/video
_

この場合はこれで十分ですが、さらにヘルプが必要な場合は、次のようにします。

_info tar
_

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

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

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

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

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

7
mikeserv

.Zip.rar、または.7zのようなアーカイブは、多数のファイルがバンドルされ、圧縮されて構成されています。 .tarアーカイブは、一緒にバンドルされた多くのファイルで構成されていますが、tar形式には圧縮が含まれていません。 .gz.bz2、または.xzファイルは、単一の圧縮ファイルです。 .tar.gz.tar.bz2などは圧縮アーカイブです。 .tbzは、.tar.bz2の代わりに.tgzが使用される場合と同様に、.tar.gzの代わりに使用されるサフィックスです。

bzip2 -d /tmp/iTunes20140618.tbzはファイルを解凍します。圧縮されていないtarアーカイブが残ります。 bzip2はtarを作成しません。与えられたものを解凍します。圧縮されたtarが与えられるため、出力は非圧縮tarになります。結果のファイルは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