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

28

Tentei a maioria dos formatos (gzip etc.) para extrair um arquivo zip tare, quando fiquei frustrado o suficiente para o Google, não encontrei maneira de extrair um arquivo zip com tarapenas recomendações para usar zipou unzip. Por uma questão de fato, meu sistema Linux nem sequer tem um ziputilitário, mas apenas unzip(me perguntando por que essa é a principal opção recomendada). Claro que unzipfuncionou, resolvendo meu problema, mas por que não consigo tarextrair arquivos zip? Talvez eu devesse perguntar: qual é a diferença entre os métodos zip e de compressão suportados por tar?

Plutão
fonte
1
Apenas uma nota, bsdtarpode extrair .ziparquivos: P
HalosGhost:
12
Você quer dizer "em por que não posso usar um abridor de latas para cortar cenouras?" O problema é que o tar possui seu próprio formato de arquivo e o comprime com o método que você escolher. zip é um animal totalmente diferente. Simples assim. É "a maneira unix", tem uma pequena ferramenta que faz um bom trabalho, em vez de ter uma porca de leite que põe ovos e suja de lã que atende a todas as suas necessidades.
23414
Editei levemente minha pergunta para deixar isso mais claro, mas acho que minha pergunta implicava claramente que eu pensava que o zip era um formato de compactação e não uma ferramenta de substituição da compactação tar +. A resposta que eu escolhi corrigiu o que eu estava assumindo e mostrou que a resposta não era baseada em opiniões.
Plutão
Você não possui zippor padrão porque o seu licenciamento não é compatível com a GPL
venimus em

Respostas:

29

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

A tarferramenta está apenas combinando vários arquivos em um único arquivo sem qualquer compactação.

A gzipferramenta está apenas compactando um único arquivo.

Se você deseja ter os dois, basta combinar as duas ferramentas, resultando em um .tar.gzarquivo.


A zipferramenta é uma coisa completamente diferente. É preciso um monte de arquivos e os combina em um único arquivo compactado. Com algoritmos totalmente diferentes.


Se você deseja que uma ferramenta governe todos eles, use atool. Vai apoiar um monte de formatos diferentes simplesmente detectando o formato e chamando a ferramenta correta.

michas
fonte
Thank you for actually explaining the purpose of both instead of just explaining what tar does. I soon figured out the answer after looking at a wikipedia article that listed formats for "Archiving," "Compression," and both in three different tables. I figured I'd wait for an answer that explained this clearly.
Pluto
Para ser um pouco exigente, o gzipalgoritmo de compactação é o mesmo usado por zip. A diferença é que isso gzipsignifica compactar qualquer fluxo de bytes, incluindo um .tararquivo, enquanto que zip, derivado e inspirado pelo PKZIP, compacta e arquiva em uma etapa (e nessa ordem).
Joe Sewell
9

Para encurtar a história: a ferramenta GNU tar não passa pelo zíper / descompacta, pois ninguém se importa.

Longa história, tamanho original:

tarnão foi inicialmente concebido para descompactar e compactar arquivos, mas para arquivar vários arquivos em um único arquivo grande. Como as pessoas não apenas queriam arquivar seus arquivos, mas também compactá-los, eles apenas canalizam a tarsaída através de qualquer compressor que aceite entrada de fluxo de dados e solte os resultados em um arquivo. Lucro!

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

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

Portanto, não é que tarnão descompacta arquivos zip, apenas que tarnão tem a capacidade de canalizá-lo através da ferramenta correta, já que ninguém se preocupou em implementá-lo e o zip já realiza a função de arquivamento de arquivo tar formato, há menos razões para o tar suportá-lo.

Agora, existem ferramentas all-in-one que compactam / descompactam tudo o que você lança nelas, novamente, você precisa das ferramentas corretas para realmente suportá-lo. Se você não os tiver, a ferramenta falhará.

Braiam
fonte
1
Bem, além de não haver ninguém implementando a ferramenta certa, não há um: os arquivos tar combinam apenas vários arquivos em um. A compactação é separada. Portanto, os filtros tar filtram apenas comprimir / descomprimir um único arquivo tar. O Zip funciona de maneira diferente; ele usa uma ferramenta integrada para compactar e combinar (um programa similar do Unix é afio).
derobert 23/07
Eu sugiro mencionar algumas das ferramentas de compactação all-in que existem. Por exemplo, existe o GNOME file-roller...
derobert 23/07
O @derobert file-roller só suporta zip se você tiver descompactado / zip / p7zip instalado. Caso contrário, é tão inútil quanto o alcatrão.
Braiam
O tar suporta apenas suas várias versões compactadas se você tiver a ferramenta relevante instalada também ... Os gerenciadores de arquivos multi-formato são úteis porque oferecem uma interface consistente para lidar com diferentes formatos de arquivos.
Derobert
@derobert exatamente.
Braiam 23/07
3

Um tararquivo é um formato de arquivo projetado para arquivos de fita. Esse formato pode ser compactado usando (por exemplo) gzipou bzip2formatos de compactação. Quando você extrai um arquivo tar compactado, descompacta efetivamente e extrai os arquivos originais do tararquivo não compactado .

Quando você extrai um ziparquivo, não há nenhum tararquivo nele, apenas todos os seus arquivos originais. Portanto, não há razão para tarestar envolvido no processo.

Você também pode compactar arquivos usando gzipou bzip2por si só, da mesma forma que pode criar ziparquivos (sem tarenvolvimento). Quando você descompacta esses arquivos, usa gunzipou bunzip2não tar.

garethTheRed
fonte
1

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

Portanto, parece que o problema é um dos locais onde as ferramentas foram e qual era o objetivo delas.

Em vez de parafrasear o que encontrei e tornar as águas desnecessariamente escuras (ofuscação me irrita), dê uma olhada neste artigo: http://www.differencebetween.net/technology/difference-between-zip-and-gzip/

Suponho que o tar possa ter construído no suporte a zip, mas as metodologias são aparentemente fundamentalmente diferentes. Ou talvez eles pensassem 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 houvesse uma ordem de restrição arquivada que impedisse que os zips cruzassem o limite do aplicativo .. Sim, eu estou brincando).

Yuppers
fonte