tarを使用して別のディレクトリに抽出するにはどうすればよいですか?


18

これは機能しません:

tar xf /tmp/foo.tar.gz foo/bar
tar: foo/bar: Not found in archive

ファイルを所定の場所に抽出してファイルを移動する以外に、これをどうするかは私には明らかではありません。

回答:


28

から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はこの点で基本的に同じです。そのマニュアルの「作業ディレクトリの変更」を参照してください


4
tarの非GNUバージョンでこの動作をテストすることをお勧めします。Solarisのマニュアルページでは、このオプションについては、追加操作と置換操作の組み合わせについてのみ言及しています。好奇心Be盛なので、抽出操作でテストしました。Solarisのtarはエラーも警告も発行せ、現在のフォルダーにアーカイブを抽出しました=:-/
ktf

1
また、AIXバージョンのtarでは機能しません。「アーカイブにファイル-Cが存在しません」-「-C」はtarballの作成に機能します。
DarkHeart

メインディレクトリを新しい名前でスワップアウトすることは可能ですか?
-tofutim

9

tarアーカイブを他の場所に展開したい場合は、目的のディレクトリにcdして展開するだけです:

 mkdir -p foo/bar
 cd foo/bar
 tar xzvf /tmp/foo.tar.gz

使用したコマンドfoo/barは、アーカイブ内のファイルを検索して抽出します。


9

やること:

(cd foo/bar ; tar xf /tmp/foo.tar.gz )

仕事をするだろう。

基本的には、新しいシェル(括弧)を生成し、このサブシェルでディレクトリを変更foo/barしてからファイルを展開します。

を変更し;て、正常に動作&&することを確認できますcd


1
このようにシェルを起動できるのはすごいことです。それができるとは思いもしませんでした。
キットサンデ

0
tar -xf ancd.tar.gz my/name/file

./filetarファイルの後にファイル名を付けることができます。

tar -xf ancd.tar.gz ./my/name/file

動作している場合は、でtarを作成したことを意味します./。lessコマンドを使用して、tarの内容を表示します。

less ...tar.file  

0

同様の問題と思われるものに遭遇し、解決しました。

問題は、作成されたファイルではなく、ファイルの作成にありました。

dir Aでtar upしてファイルを転送しようとすると、tarコマンドで元のファイルへのパスを指定しました

tar -cvf MyFile.tar /foo/bar/dir/not/needed/path/*

私が解決することができたのは

cd /foo/bar/dir/not/needed/
tar -cvf /tmp/MyFile.tar path*

tarballを転送および抽出すると、必要なサブディレクトリが作成されます。

tar -xvf MyFile.tar

0

抽出するディレクトリを変更します

cd /u02/restore

/u01/backup.tarの下の抽出ファイルの場所

次のように抽出します。

cd /u02/restore
tar -xvf /u01/backup.tar

0

コマンド:

tar -xzvf foo.tar.gz -C /home/user/bar/

入力ファイル「foo.tar.gz」をディレクトリ/home/user/barに抽出し、処理されたファイルを印刷します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.