어떤 상황에서 gunzip & tar xf는 작동하지만 tar xzf는 실패합니까?


9

요점을 설명하기 위해 : 회사 웹 사이트 에서 LEDA 라이브러리를 다운로드했습니다 . tar -xzf를 사용하면 실패합니다.

$ tar -xzf LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar.gz 
tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors

그러나 gunzip 다음에 tar -xf가 올바로 작동합니다.

$ gunzip LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar.gz
$ tar -xf LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar
# no error

왜 이것이 가능한지 말해 줄 수 있습니까?-표준 tar명령이 항상 작동하기를 원합니다 .


어떤 운영 체제입니까? IIRC에는 tar-z를 구현하지 않는 유닉스가 있습니다
Bananguin

@ user1129682 회사 사이트에서 Linux 및 Win 옵션 만있는 것 같습니다.
MattDMo

tar가 z를 지원하지 않으면 대신 파이프를 사용하십시오 gunzip < archive.tar.gz | tar -x. 모든 곳에서 작동해야합니다.
frostschutz

사본이 targunzip 압축 해제를 지원하지 않으면 대신 다음을 수행 할 수 있습니다 gunzip -c $file | tar -x.. 쉘 함수로 마무리하는 것이 일반적입니다.

1
방금 해당 아카이브를 다운로드 tar xzf했으며 데비안 GNU / 리눅스 (물론 gnutar를 사용함)에서 오류가 발생했습니다. 이상한.
derobert

답변:


12

발생한 것으로 보이는 것은 아카이브를 두 번 압축 한 것입니다.

filegunzip의 파일에서 실행 하는 경우 여전히 gzip 아카이브를 찾을 수 있습니다. 그리고 .gz를 다시 갖도록 이름을 바꾸면 다시 압축 할 수 있습니다.

-z입력이 파일 인 경우 gnu tar가 자동으로 옵션을 추가하는 것 같습니다 . 따라서 -z이미 실행 gunzip한 후에 옵션 없이 작동하는 이유는 tar가 자동으로 추가 한 것입니다.

이 동작은 정보 페이지에서 문서화됩니다.

"압축 된 아카이브를 읽는 것이 훨씬 간단합니다. GNU`tar '이 자동으로 형식을 인식하므로 추가 옵션을 지정할 필요가 없습니다. [...] 형식 인식 알고리즘은"서명 "에 기반한 특수 바이트 시퀀스를 기반으로합니다. 특정 압축 형식에 특정한 파일 시작 "

§8.1.1 "압축 아카이브 작성 및 읽기"에서 발췌 한 것입니다.


아주 잘 발견되었습니다! gunzip과 tar의 모든 조합으로 확인되었습니다.
Michael Schubert
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.