2.8.2 特定のファイルの展開
特定のアーカイブメンバーを展開するには、--list(-t)で表示される正確なメンバー名を引数に指定します。前にアーカイブcollection.tarへ格納したファイルの1つ(たとえばblues)を誤って削除した場合、アーカイブの構造を変えずに取り出せます。その内容は、削除した元のファイルbluesと同一です。
まず、practiceディレクトリにいることを確認し、その中のファイルを一覧表示してください。次に「blues」を削除し、もう一度ファイルを一覧表示します。
これで、アーカイブファイルcollection.tarからメンバーbluesを、次のように展開できます。
$ tar --extract --file=collection.tar blues
再びディレクトリ内のファイルを一覧表示すると、bluesが元のアクセス許可、データ更新時刻、所有者とともに復元されたことが分かります。1(これらの値は、最初にアーカイブに格納した時点と同一です。ただし、ファイルシステムから削除する前に変更を加えていたとしても、その変更はアーカイブメンバーには反映されません。)アーカイブファイル「collection.tar」は、「blues」を展開する前と同じです。tarを--list(-t)で実行すると確認できます。
他の操作と同じく、正確なメンバー名の指定が重要であることを覚えておいてください(さらに例を見るには、失敗するコマンドを参照)。
上のオプションと--to-stdout(-O)を組み合わせると、ファイルを標準出力へ展開できます(標準出力への書き込みを参照)。
--verboseを指定すると、--extractは展開するアーカイブメンバーの名前を表示します。
(1)
これはこの例でたまたま成り立つだけで、一般には当てはまりません。更新時刻は常に復元されますが、所有者を復元するには通常rootである必要があり、アクセス許可を復元するには特別なオプションを使う必要があります。ここでは、復元するユーザーが格納したメンバーの所有者でもあり、現在のumaskが元のアクセス許可と両立しているため、たまたま復元されるのです。