tar에서 다른 폴더로 개별 파일 추출

tar에서 다른 폴더로 개별 파일 추출

여러 포럼에서 이 질문을 검색해 다양한 답변을 봤지만, 지금까지 여기서 본 답변도 아무런 효과가 없었습니다.

tar에서 다른 디렉토리로 개별 파일을 추출하고 싶습니다.

나는 이것을 시도했습니다 :

tar xvf file.tar -C /home/dir/ filename

아니면 이거:

tar -x filename -f file.tar -C /home/dir

그러나 각각 다음과 같은 오류가 발생합니다.

x filename, 14826 bytes, 29 media blocks.
File -C not present in the archive.
File /home/dir not present in the archive.

그리고:

tar: /dev/rmt0: A file or directory in the path name does not exist.

첫 번째는 파일의 압축을 풀지만 원하는 폴더가 아닌 동일한 디렉터리에 있습니다.

답변1

대부분의 버전에는 tar옵션 앞에 빼기 기호를 추가하는지 여부에 따라 두 가지 모드가 있습니다.

맨 위AIX tar 매뉴얼 페이지차이점을 요약하면 다음과 같습니다.

Berkeley Standards:

tar {c|r|t|u|x} ... [ Archive ] Directory | File ...

X/Open Standards:

tar {-c|-r|-t|-u|-x} ... [-f Archive] ... [-C Directory] File | Directory...

마이너스 없음, tarBerkeley 호환 모드에서 작동합니다. 이 모드에서는 옵션이 현재 표준 UNIX 명령줄 규칙을 따르지 않습니다. 대신 모든 플래그를 순서에 상관없이 함께 배치해야 합니다. 이 f플래그는 플래그 뒤의 첫 번째 단어가 테이프 드라이브 대신 사용해야 하는 파일 이름임을 의미합니다 /dev/rmt0. ( t테이프를 의미하며 기본값은 이를 반영합니다.) 또한 tar호환 모드에는 옵션이 없습니다.-C

tar대부분의 UNIX 명령처럼 작동하는 빼기 기호를 사용하십시오 . 모든 플래그(및 해당 인수)를 먼저 지정하고 플래그가 아닌 플래그를 지정해야 합니다. -f파일 이름을 인수로 사용하므로(본질적으로 파일 이름은 플래그에 속함 -f) file.tar바로 뒤에 와야 합니다 -f. 이것이 맨 페이지가 에 있지만 인수를 취하지 않는 이유 입니다 [-f Archive]( 속하지 않음 ) . 매뉴얼 페이지를 다시 보면, 귀하의 예에서는 명령줄 끝까지 일치합니다.Archive-f-xfilename-xfilenameFile | Directory...

명령의 수정된 버전은 다음과 같습니다.

(cd /home/dir; tar xvf /path/to/file.tar filename)

그리고

tar -x -f file.tar -C /home/dir filename

GNU tar도 비슷한 일을 합니다. 세 가지 옵션 스타일차이점에 대한 훌륭한 설명.

관련 정보