tarを使用して別のディレクトリに抽出する方法は?

tarを使用して別のディレクトリに抽出する方法は?

これはうまくいきません:

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

関連情報