어떤 상황에서 gunzip & tar xf는 작동하지만 tar xzf는 실패합니까? LEDA 라이브러리를 다운로드했습니다

요점을 설명하기 위해 : 회사 웹 사이트 에서 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명령이 항상 작동하기를 원합니다 .



답변

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

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

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

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

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

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