Por que o tar não pode extrair arquivos .zip? [fechadas]

20

Eu tentei a maioria dos formatos (gzip, etc.) para extrair um arquivo zip com tar , e quando me tornei frustrado o suficiente para o Google, não encontrei uma maneira de extrair um arquivo zip com tar e apenas recomendações para usar zip ou unzip . De fato, meu sistema Linux nem tem um utilitário zip , mas apenas unzip (deixando-me perguntar por que essa é a principal opção recomendada). É claro que unzip funcionou, resolvendo meu problema, mas por que não é possível tar extrair arquivos zip? Talvez eu devesse estar perguntando, qual é a diferença entre o zip e os métodos de compactação suportados por tar ?

    
por Pluto 23.07.2014 / 22:38

4 respostas

23

A filosofia do UNIX é ter pequenas ferramentas. Uma ferramenta está fazendo exatamente uma coisa, mas isso é especialmente bom.

A ferramenta tar combina apenas vários arquivos em um único arquivo, sem nenhuma compactação.

A ferramenta gzip está apenas compactando um único arquivo.

Se você quer ter ambos, basta combinar as duas ferramentas, resultando em um arquivo .tar.gz .

A ferramenta zip é uma coisa completamente diferente. Ele pega vários arquivos e os combina em um único arquivo compactado. Com algoritmos totalmente diferentes.

Se você quiser que uma ferramenta as gere, use atool . Ele suportará um conjunto inteiro de diferentes formatos simplesmente detectando o formato e chamando a ferramenta correta.

    
por 23.07.2014 / 23:29
9

Longa história: a ferramenta tar GNU não canaliza através de zip / unzip, pois ninguém se importa.

longa história, tamanho original:

tar não foi inicialmente criado para descompactar e compactar arquivos, mas para arquivar vários arquivos em um único arquivo grande. Como as pessoas não apenas desejavam arquivar seus arquivos, mas também compactá-los, eles simplesmente canalizavam a saída tar através de qualquer compressor que aceitasse a entrada do fluxo de dados e descartasse os resultados em um arquivo. Lucro!

Agora, para tornar essa tarefa o mais simples possível, tar decidiu canalizar internamente os arquivos gerados para ferramentas de compactação, como gzip, lzma etc., que foram ativadas por sinalizadores especiais para cada formato ao executar tar . É por isso que quando você tenta extrair um arquivo corrompido através de tar , é mostrado o erro de ferramenta subjacente, em vez de tar :

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

Portanto, não é que tar não descomprima arquivos zip, só que tar não tem a capacidade de canalizá-lo através da ferramenta correta, já que ninguém realmente se incomodou em implementá-lo e zipar já realizar a função de arquivamento de arquivo do formato de arquivo tar, há menos razões para o tar suportá-lo.

Agora, existem ferramentas completas que compactam / descomprimem tudo o que você joga nelas, novamente, você precisa ter as ferramentas corretas para realmente suportá-las. Se você não tiver, a ferramenta falhará.

    
por 23.07.2014 / 23:12
3

Um arquivo tar é um formato de arquivo criado para arquivos de fita. Esse formato pode ser compactado usando (por exemplo) gzip ou bzip2 formatos de compactação. Ao extrair um arquivo tar compactado, você efetivamente o descompacta e extrai os arquivos originais do arquivo tar não compactado.

Quando você extrai um arquivo zip , não há nenhum arquivo tar dentro dele, apenas todos os seus arquivos originais. Portanto, não há razão para que tar esteja envolvido no processo.

Você também pode compactar arquivos usando gzip ou bzip2 sozinhos, assim como pode criar zip arquivos (sem tar envolvido). Quando você descompacta esses arquivos, usa gunzip ou bunzip2 e não tar .

    
por 23.07.2014 / 22:57
1

Como a resposta "Algumas coisas simplesmente são e devemos aceitá-las" também não é bom para mim, eu apenas fiz algumas pesquisas (sempre bom aprender algo novo, não é?).

Portanto, parece que a questão é uma de onde as ferramentas foram e qual era seu objetivo.

Em vez de parafrasear o que eu encontrei e tornar as águas desnecessariamente obscuras (a ofuscação me irrita), dê uma olhada neste artigo: link

Suponho que o tar poderia ter construído suporte zip, mas as metodologias são aparentemente fundamentalmente diferentes. Ou talvez eles pensaram por que alguém usaria essa ferramenta de arquivamento para gerenciar arquivos de outra ferramenta de arquivamento e compactação (ou talvez houvesse alguma discussão entre os dois codificadores originais e havia uma ordem de restrição arquivada que impedia que os zips cruzassem o limite do aplicativo. sim estou brincando).

    
por 23.07.2014 / 22:54

Tags