.zip 파일을 tar로 추출 할 수없는 이유는 무엇입니까? [닫은]


28

나는 zip 파일을 추출하기 위해 대부분의 형식 (gzip 등)을 시도했으며 tarGoogle에 충분히 좌절했을 때 또는 tar을 사용 하여 zip 파일을 추출 할 수있는 방법을 찾지 못했습니다 . 사실, 내 리눅스 시스템에는 유틸리티가 없지만 (이것이 왜 주요 권장 옵션인지 궁금해합니다). 물론 문제가 해결되었지만 zip 파일을 추출 할 수없는 이유는 무엇입니까? 아마도 대신에 물어봐야 할 것입니다 .zip과 압축 방법의 차이점은 무엇 입니까?zipunzipzipunzipunziptartar


1
참고로, 아카이브 bsdtar를 추출 할 수 .zip있습니다 : P
HalosGhost

12
"캔 오프너를 사용하여 당근을자를 수없는 이유는 무엇입니까?" tar는 자체 파일 형식을 가지고 있으며 선택한 방법으로 압축합니다. 지퍼는 완전히 다른 짐승입니다. 그렇게 간단합니다. 그것은 "유닉스 방식"이며, 모든 요구를 충족시킬 수있는 알을 낳고, 양모를 함유 한 우유를 뿌리는 대신 하나의 일을 잘 수행하는 하나의 작은 도구를 가지고 있습니다.
tink

나는 이것을 명확하게하기 위해 내 질문을 약간 편집했지만, 내 질문은 zip이 압축 형식이며 tar + 압축의 대체 도구가 아니라고 생각한다는 것을 분명히 암시한다고 생각합니다. 내가 선택한 답변은 내가 가정 한 내용을 수정했으며 그 답변이 의견에 근거하지 않았다는 것을 보여주었습니다.
명왕성

당신이없는 zip라이선스는 GPL과 호환되지 않기 때문에 기본적으로
venimus

답변:


29

유닉스 철학은 작은 도구를 사용하는 것입니다. 하나의 도구가 정확히 한 가지 작업을 수행하지만 특히 잘 수행됩니다.

tar도구는 압축없이 여러 파일을 단일 파일로 결합합니다.

gzip도구는 단일 파일을 압축하고 있습니다.

두 가지를 모두 원한다면 두 도구를 결합하여 .tar.gz파일을 만듭니다.


zip도구는 완전히 다른 것입니다. 많은 파일을 가져 와서 하나의 압축 파일로 결합합니다. 완전히 다른 알고리즘으로.


하나의 도구가 모두를 지배하도록하려면을 사용하십시오 atool. 그것은 지원 왕창 단순히 형식을 감지하고 올바른 도구를 호출하여 다른 형식을.


tar의 기능을 설명하는 대신 두 가지 목적을 실제로 설명해 주셔서 감사합니다. "아카이빙", "압축"의 형식과 세 가지 다른 표를 모두 나열한 위키 백과 기사 를 보고 답을 찾았습니다 . 나는 이것을 명확하게 설명하는 대답을 기다릴 것이라고 생각했다.
명왕성

약간 까다롭기 위해 gzip압축 알고리즘은에서 사용하는 것과 동일합니다 zip. 차이점은 파일을 gzip포함한 모든 바이트 스트림을 압축하는 .tar반면 zipPKZIP에서 파생되고 영감을 얻은 한 단계 (및 그 순서)로 압축 및 아카이브하는 것입니다.
Joe Sewell

9

짧은 이야기 : tar GNU 도구는 아무도 신경 쓰지 않기 때문에 zip / unzip을 통해 파이프하지 않습니다.

긴 이야기, 원래 크기 :

tar처음에는 파일을 압축 해제하고 압축하기위한 것이 아니라 여러 파일을 하나의 큰 파일로 보관하는 것이 었습니다. 사람들은 파일을 아카이브 할뿐만 아니라 압축하기도하므로 tar데이터 스트림 입력을 허용하고 결과를 파일로 끌어 오는 압축기를 통해 출력을 파이프하기 만하면 됩니다. 이익!

이제 이러한 작업을 가능한 한 어려움없이 수행 tar하기 위해 gzip, lzma 등과 같은 압축 도구에 생성 된 파일을 내부적으로 파이프하기로 결정했습니다.이 파일은 실행할 때 각 형식에 대해 특수 플래그로 활성화되었습니다 tar. 그래서 손상된 파일을 추출하려고하면의 tar대신 기본 도구 오류가 표시됩니다 tar.

$ tar zxf damaged.tar.gz
gzip: damaged.tar.gz: unexpected end of file

따라서 tarzip 파일의 압축을 풀지 tar않는 것은 아닙니다. 실제로 아무도 그것을 구현하는 것을 방해하지 않았기 때문에 zip 파일의 파일 보관 기능을 달성하지 못했기 때문에 올바른 도구를 통해 압축 할 수있는 기능이 없습니다. tar가 그것을 지원할 이유가 적다.

이제 여러분이 던지는 모든 것을 압축 / 압축 해제하는 올인원 도구가 있습니다. 실제로이를 지원하려면 올바른 도구가 필요합니다. 그것들이 없으면 도구가 실패합니다.


1
음, 단지 어떤 하나를 통해 파이프에 적합한 도구를 구현하지 넘어,이없는 하나 tar 파일은 하나에 여러 개의 파일을 결합. 압축은 별개입니다. 따라서 필터 tar 파이프는 단일 tar 파일을 압축 / 압축 해제합니다. Zip은 다르게 작동합니다. 하나의 통합 도구를 사용하여 압축 및 결합합니다 (유닉스 프로그램과 유사 afio).
derobert

존재하는 올인원 압축 도구 몇 가지를 언급하는 것이 좋습니다. 예 : 그놈이 있습니다 file-roller.
derobert

@derobert 파일 롤러는 unzip / zip / p7zip이 설치된 경우 zip 만 지원합니다. 그렇지 않으면 tar와 마찬가지로 쓸모가 없습니다.
Braiam

tar는 관련 도구도 설치되어있는 경우 다양한 압축 버전 만 지원합니다. 다중 형식 아카이브 관리자는 다른 아카이브 형식을 처리 할 수있는 일관된 인터페이스를 제공하므로 유용합니다.
derobert

@derobert 정확하게.
Braiam

3

tar파일은 테이프 아카이브를 위해 설계 자체에있는 파일 형식입니다. 그런 다음이 형식을 (예를 들어) gzip또는 bzip2압축 형식 을 사용하여 압축 할 수 있습니다. 압축 된 tar 파일을 추출 할 때 효과적으로 압축을 풀고 압축되지 않은 파일에서 원본 파일을 추출 tar하십시오.

zip파일 을 추출 할 때 그 tar안에 파일 이없고 모든 원본 파일 만 있습니다. 따라서 tar프로세스에 전혀 참여할 이유가 없습니다 .

파일을 만들 수있는 것처럼 ( gzip또는 관련 없이 ) 파일을 사용 하거나 bzip2직접 압축 할 수도 있습니다 . 이 파일의 압축을 풀 때 또는 사용 하지 않습니다 .ziptargunzipbunzip2tar


1

"어떤 것들이 있고 우리는 그것들을 받아 들여야한다"라는 대답이 나와 잘 맞지 않기 때문에, 나는 단지 약간의 파기를했다 (항상 새로운 것을 배우는 것이 좋지 않습니까?).

따라서 문제는 도구가 어디로 갔고 목표가 무엇인지 중 하나입니다.

내가 찾은 것을 역설하고 물을 불필요하게 불쾌하게 만드는 대신 (난독 화가 나를 화나게하는 대신)이 기사를보십시오 : http://www.differencebetween.net/technology/difference-between-zip-and-gzip/

tar가 zip 지원 기능을 내장했을 수 있지만 방법론은 근본적으로 다릅니다. 또는 다른 보관 및 압축 도구의 파일을 관리하기 위해이 보관 도구를 사용하는 이유를 생각했을 수도 있습니다 (또는 두 원본 코더 사이에 약간의 논쟁이 있었으며 우편 번호가 응용 프로그램 경계를 넘지 못하게하는 금지 명령이 있었을 수도 있습니다.) 예, 농담입니다).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.