tar가 .zip 파일의 압축을 풀 수 없는 이유는 무엇입니까? [폐쇄]

tar가 .zip 파일의 압축을 풀 수 없는 이유는 무엇입니까? [폐쇄]

을 사용하여 zip 파일을 추출하기 위해 대부분의 형식(gzip 등)을 시도했지만 tarGoogle에 좌절했을 때 를 사용하여 zip 파일을 추출할 수 있는 방법이 없고 또는 를 tar사용하라는 제안만 있음을 발견했습니다 . 사실 내 Linux 시스템에는 유틸리티도 하나 밖에 없습니다 (왜 이것이 주로 권장되는 옵션인지 궁금합니다). 물론 작동하고 문제가 해결되었지만 zip 파일을 추출할 수 없는 이유는 무엇입니까? 어쩌면 zip과 지원되는 압축 방법의 차이점이 무엇인지 물어봐야 할까요 ?zipunzipzipunzipunziptartar

답변1

UNIX의 철학은 가젯을 갖는 것입니다. 도구는 한 가지 일을 하며 그 일을 매우 잘 수행합니다.

tar도구는 압축 없이 여러 파일을 하나로 병합합니다.

gzip도구는 개별 파일만 압축합니다.

두 도구를 모두 갖고 싶다면 두 도구를 결합하여 단일 .tar.gz파일을 생성하기만 하면 됩니다.


zip도구는 완전히 다른 것입니다. 여러 개의 파일을 가져와 압축 파일로 결합합니다. 완전히 다른 알고리즘을 사용합니다.


도구를 통해 모두 관리하려면 다음을 사용하세요 atool.많이형식을 감지하고 올바른 도구를 호출하여 다양한 형식을 인식하면 됩니다.

답변2

간단히 말해서 tar GNU 도구는 아무도 신경 쓰지 않기 때문에 zip/압축 해제를 파이프하지 않습니다.

긴 이야기, 원본 크기:

tar원래는 파일의 압축을 풀고 압축하려는 것이 아니라 여러 파일을 하나의 큰 파일로 보관하는 것입니다. 사람들은 파일을 보관할 뿐만 아니라 압축하기를 원하기 때문에 tar데이터 스트림 입력을 받아들이고 결과를 파일에 저장하는 압축기를 통해 출력을 파이프하기만 하면 됩니다. 이익!

이제 이러한 작업을 가능한 한 쉽게 만들기 위해 tar생성된 파일을 gzip, lzma 등과 같은 압축 도구에 내부적으로 파이프하기로 결정했습니다. 이 도구는 각 형식에 대한 특수 플래그에 의해 런타임에 활성화됩니다 tar. 그렇기 때문에 손상된 파일을 추출하려고 하면 다음 tar대신 기본 도구 오류가 표시됩니다 tar.

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

tar따라서 zip 파일의 압축을 풀 수 없다는 것은 아닙니다 . 단지 tar아무도 그것을 구현하려고 애쓰지 않았기 때문에 올바른 도구를 사용하여 파일을 전송할 수 있는 능력이 없다는 것입니다. zip은 이미 tar 파일의 파일 보관 기능을 수행하고 있지만 tar가 그것을 지원할 이유가 없습니다.

이제 모든 것을 압축/압축 해제할 수 있는 올인원 도구가 있으며, 이를 진정으로 지원하려면 올바른 도구가 필요합니다. 그것들이 없으면 도구는 실패합니다.

답변3

파일 tar자체는 테이프 보관을 위해 특별히 설계된 파일 형식입니다. 그런 다음 이 형식은 (예를 들어) gzip또는 압축 형식을 사용하여 압축할 수 있습니다 . bzip2압축된 tar 파일을 추출하면 실제로 압축을 풀고 tar압축되지 않은 파일에서 원본 파일을 추출합니다.

파일을 추출하면 파일 zip은 없고 tar원본 파일만 모두 들어 있습니다. 따라서 tar이 과정에 참여할 이유가 전혀 없습니다 .

파일을 생성할 수 있는 것처럼 (관련 없음) gzip또는 자체를 사용하여 파일을 압축할 수도 있습니다 . 이러한 파일의 압축을 풀 때 대신 또는 를 사용합니다 .bzip2ziptargunzipbunzip2tar

답변4

"어떤 것들은 있는 그대로이고 우리는 그것을 받아들여야 한다"는 대답이 나에게도 효과가 없었기 때문에, 나는 단지 좀 파헤쳐 보기만 했습니다. (새로운 것을 배우는 것은 항상 좋은 일이지 않습니까?)

따라서 문제는 이러한 도구의 목적이 어디에 있고 무엇인지인 것 같습니다.

내가 찾은 내용을 설명하고 불필요하게 혼란을 야기하는 대신(난독화로 인해 화가 납니다) 다음 기사를 확인하세요. http://www.difference Between.net/technology/difference- Between-zip-and-gzip/

나는 tar에 zip 지원이 내장되어 있을 수 있다고 생각했지만 접근 방식은 분명히 근본적으로 다릅니다. 또는 누군가가 다른 보관 및 압축 도구의 파일을 관리하기 위해 이 보관 도구를 사용하는 이유를 생각할 수도 있습니다(또는 두 원래 코더 사이에 논쟁이 있었고 zip이 응용 프로그램 경계를 넘지 못하도록 금지 명령이 내려졌을 수도 있습니다. 예, 저는 농담이에요).

관련 정보