これはうまくいきません:
tar xf /tmp/foo.tar.gz foo/bar
tar: foo/bar: Not found in archive
ファイルを所定の位置に抽出して移動する以外に何をすべきかは不明です。
答え1
からman tar
:
-C directory
In c and r mode, this changes the directory before adding the
following files. In x mode, change directories after opening the
archive but before extracting entries from the archive.
つまり、tar xC /foo/bar -f /tmp/foo.tar.gz
作業を完了する必要があります。 (FreeBSDではただし、GNU tarはこの点で基本的に同じです。マニュアルの「作業ディレクトリの変更」を参照してください。)
答え2
他の場所からtarアーカイブを抽出したい場合CDターゲットディレクトリに移動してそこから解凍します。
mkdir -p foo/bar
cd foo/bar
tar xzvf /tmp/foo.tar.gz
foo/bar
使用するコマンドは、アーカイブからファイルを検索して抽出します。
答え3
行為:
(cd foo/bar ; tar xf /tmp/foo.tar.gz )
仕事をします。
デフォルトでは、これが行うことは、新しいシェル(括弧)を作成し、このサブシェルでディレクトリをに変更してからファイルを解凍するfoo/bar
ことです。
;
これを変更して、正しく機能していることを&&
確認できます。cd
答え4
抽出するディレクトリを変更します。
cd /u02/restore
解凍したファイルが /u01/backup.tar の下にある場合
抜粋内容は以下の通りです。
cd /u02/restore
tar -xvf /u01/backup.tar