gunzip과 tar를 사용하여 tar.gz 파일을 원하는 특정 디렉토리에 추출하려면 어떻게 해야 합니까?

gunzip과 tar를 사용하여 tar.gz 파일을 원하는 특정 디렉토리에 추출하려면 어떻게 해야 합니까?

gunzip -dc /path_to_tar.gz_file/zip1.tar.gz | tar xf -파일이 있는 디렉토리에서 실행하면 tar.gz잘 추출됩니다.

tar.gz파일 내용을 특정 디렉터리 에 넣으려면 어떻게 해야 합니까 ?

이것을 시도했지만 오류가 gunzip -dc /path_to_tar.gz_file/zip1.tar.gz | tar xf /target_directory발생했습니다 .tar

또한 여기서는 bash 스크립트에서 이 작업을 수행하려고 하며 Solaris 10을 실행하고 있다는 점을 지적해야 합니다.

답변1

tar다음 명령을 실행하여 원하는 위치에 콘텐츠를 추출 할 수 있습니다.

tar -zxvf path_to_file -C output_directory

설명된 대로tar 맨페이지:

-C 디렉토리, --cd 디렉토리, --directory 디렉토리

c 및 r 모드에서는 다음 파일을 추가하기 전에 디렉터리가 변경됩니다. x 모드에서는 아카이브를 연 후 아카이브에서 항목을 추출하기 전에 디렉토리를 변경합니다.


추가하신대로 사용 중입니다.솔라리스, 다음을 시도해 볼 수 있을 것 같습니다.

gunzip -dc path_to_file | tar xf - -C path_to_extract

답변2

이것이 당신이 원하는 것입니까?

tar xzvf file.tar.gz -C /target/directory

답변3

최신 Linux에서는 다음을 사용할 수 있습니다.

tar xzf /path/to/file.tar.gz -C /target/directory/

이는 다음과 거의 동일합니다.

(cd /target/directory/; gzip -cd /path/to/file.tar.gz|tar xf - )

Linux를 사용하지 않는 경우 매뉴얼 페이지를 확인하여 도구가 지원하는 옵션을 확인하세요.

답변4

여기에 있는 다른 답변 중 어느 것도 tarSolaris의 기본 구현에 대한 모든 경고를 언급하지 않습니다. 한 가지 주의할 점은 기본적으로 압축을 지원하지 않는다는 것입니다. 간단한 추출은 다음을 통해 달성할 수 있습니다.

gzip -dc < /path/to/the.tar.gz | tar xvf -

또한 다음과 같은 방법으로 아카이브를 생성한 경우

tar cvf - /path/to/directory | gzip -c > the.tar.gz

이 아카이브를 추출하면 항상 원본 파일을 덮어쓰게 됩니다. 이는 Solaris가 를 추출할 때 아카이브 항목에서 선행 부분을 제거 tar하지 않거나 경로 구성 요소를 제거할 수 없기 때문입니다. /따라서두번째내용의 복사본을 만들려면 약간 다른 명령을 사용하여 아카이브를 만들어야 합니다.

tar cvf - -C /path/to/directory . | gzip -c > the.tar.gz

또는

(cd /path/to/directory && tar cvf - .) | gzip -c > the.tar.gz

Solaris 구현에서는 이 -C스위치가 추출에 적용되지 않습니다. 아카이브가 다음 두 가지 방법 중 하나 또는 이와 유사한 방법을 사용하여 생성되었다고 가정하면 두 번째 형식 변형을 사용하면 임의의 위치로 추출할 수 있습니다.

gzip -dc < the.tar.gz | (cd /path/to/extraction/point && tar xvf -)

tarGNU( )를 설치 한 경우 /usr/sfw/bin/gtar직접 압축은 물론 경로 제거도 지원합니다. 이 경우 일반적인 옵션은 다음과 같습니다.

/usr/sfw/bin/gtar xvzf the.tar.gz

충분할 것입니다.

관련 정보