단순 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!

답변2

tarball 이름은 파일 경로에 포함되어야 합니다:

tar xf 놀이터 .tar운동장/테스트.txt

관련 정보