単純tar抽出に失敗しました。ファイルが見つかりません。

単純tar抽出に失敗しました。ファイルが見つかりません。

次のファイルを含むPlayground.tarというtarballがあります。

テスト.txt

すべてを抽出すると問題はありませんが、単一のファイルを抽出しようとすると、このコマンドを実行すると次のエラーが発生します。

 tar xf playground.tar test.txt

tar:test.txt:アーカイブに見つかりません。

tar:以前のエラーのため失敗して終了しました。

また、パスを引用符で囲んでみました。ファイルは間違いなく存在します。

編集する

ターボールは次のコマンドを使用して生成されます。

tar cf遊び場.tar遊び場

ベストアンサー1

フルパスを指定する必要があります。

tar -xf playground.tar playground/test.txt

アーカイブされたコンテンツを使用tar --listまたはtar -t一覧表示して、内部コンテンツを確認できます。

$ tar -tf playground.tar
playground/
playground/text.txt

あなたの問題を再現するために行った操作の完全なログは次のとおりです。

$ cd $(mktemp -d)                              # Go to a new empty directory
$ mkdir playground
$ touch playground/test.txt                    # Make the file we will tar

$ tar cf playground.tar playground             # Make the tar
$ tar -tf playground.tar                       # List the contents of a tar
playground/
playground/test.txt                            # There's our file! It has a full path

$ rm -r playground                             # Let's delete the source so we can test extraction
$ tar -xf playground.tar playground/test.txt   # Extract that file
$ find .                                       # Check if the file is now there
.
./playground.tar
./playground
./playground/text.txt                          # Here it is!

または、ディレクトリ全体をパッケージ化する必要はありません。これも動作します。また、test2.txt解凍されていないディレクトリ全体を表示すると付け加えました。

$ cd $(mktemp -d)                 # New directory
$ touch test.txt test2.txt        # Let's make a few files
$ tar -cf playground.tar *.txt    # Pack everything
$ tar -tf playground.tar          # What's in the archive?
test2.txt
test.txt                          # Look: No directory!
$ rm *.txt                        # Clear the source files to test unpacking
$ tar -xf playground.tar test.txt # Unpack one file (no directory name)
$ find .
.
./test.txt
./playground.tar                  # There it is!

おすすめ記事