次のアーカイブディレクトリがあります:
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 アーカイブが残ります。 はbzip2
tar を作成しません。与えられたものを解凍します。圧縮された 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