No Linux / Unix, .tar.gz versus .zip importa?


69

Às vezes, os programas de plataforma cruzada são distribuídos como .tar.gz para a versão Unix e .zip para a versão Windows. Isso faz sentido quando o conteúdo de cada um deve ser diferente.

Se, no entanto, o conteúdo for o mesmo, seria mais simples ter apenas um download. O Windows prefere .zip porque esse é o formato que ele pode suportar imediatamente. Isso importa no Unix? Ou seja, tentei hoje descompactar um arquivo no Ubuntu Linux, e funcionou bem; existe algum problema com isso em qualquer sistema operacional atual semelhante ao Unix, ou está correto fornecer apenas um arquivo .zip em todos os aspectos?

Respostas:


28

Necromante.
Sim, isso importa.
Na verdade, depende.

tar.gz

  • Armazena atributos de arquivo unix : uid, gid, permissões (principalmente executáveis). O padrão pode depender da sua distribuição e pode ser alternado com as opções.
  • Consolida todos os arquivos a serem arquivados em um arquivo ("Tape ARchive").
  • A compactação real é feita pelo GZIP, em um arquivo .tar

fecho eclair

  • Armazena atributos do MSDOS . (Arquivar, Somente leitura, Oculto, Sistema)
  • Compacta cada arquivo individualmente e consolida os arquivos compactados individualmente em um arquivo
  • Inclui uma tabela de arquivos no final do arquivo

Como o zip compacta os arquivos individualmente, um arquivo zip provavelmente terá um tamanho maior (especialmente com muitos arquivos menores - pense nos arquivos de configuração).

Então você vê, além do tamanho do arquivo, se você compactar vários arquivos no Linux / Unix e descompactá-los, os atributos do arquivo desaparecerão (no mínimo os não suportados pelo MS-DOS - depende de qual ZIP software que você usa). Isso pode importar, ou não, nesse caso, não importa (porque a diferença de tamanho do arquivo é na maioria dos casos insignificante).


10
a distribuição padrão do zip em sistemas tipo unix (info-zip) também armazena atributos de arquivo unix.
— Erik Aronesty

35

O tar gz é melhor para Linux / Unix, pois mantém permissões, como "executável" em scripts.


8
O Archive Utility do OS X e zip / descompactam preservam as permissões, mas pode haver outros utilitários que não o fazem.
— Lri

4
As ferramentas padrão zip / descompactar (info-zip) mantêm permissões no linux e carimbos de data e hora no windows. consulte: en.wikipedia.org/wiki/Info-ZIP para obter recursos típicos ... que superam os problemas de permissão e as limitações de tamanho de arquivo, mantendo o acesso aleatório desejável e as propriedades de arquivo editável.
— Erik Aronesty

33

As distribuições Linux mais populares atualmente são equipadas por padrão com zipcompatibilidade. Mas como declarado pelo nc3b, tare gzipsão mais comuns em sistemas Linux / Unix. Se você precisar de 95% de compatibilidade nesses sistemas, considere usar tare gzip. Se você precisar de apenas 85%, zipfará bem.


2
Ok, 95% é melhor que 85% :-) Uma questão muito pequena, importa se a extensão do arquivo é .tgz em vez de .tar.gz?
— Rallace

8
A extensão não importa, é apenas usada para referência por usuários e programas. Se a extensão for .XXX e você souber que é .tar, você ainda poderá usar o tar para descompactá-la. .tgz e .tar.gz são de fato as mesmas extensões e os arquivos com essas extensões seriam semelhantes.
— BloodPhilia

2
Por outro lado, para 100% de compatibilidade no Windows, você precisará usar o táxi.
— kinokijuf

3
O tar armazenará uid, gid e permissões, como + x em sistemas unix. zip armazena arquivo, somente leitura, oculto e sistema em sistemas Windows.
— Andrew De Andrade

11
@mtak você sempre pode apenas usar gunzip --suffix .zip npm-debug.log.zipougunzip -c < npm-debug.log.zip > npm-debug.log
— Iwan Aucamp

19

tar / gzip é um formato bastante ruim, pois o arquivo não pode ser acessado, atualizado, verificado ou anexado a ... aleatoriamente, sem ter que descomprimir o arquivo inteiro.

zip é muito melhor nesse sentido .... você pode obter rapidamente o conteúdo de um arquivo zip, anexá-lo sem recomprimir a primeira parte, etc.

zip tem algumas limitações de tamanho ... dependendo da versão do "zip" usada ... e isso pode ser um problema. mas a ferramenta info-zip padrão que vem com a maioria dos sistemas operacionais Linux não tem limitações de tamanho e preserva as permissões de arquivo.

consulte: https://en.wikipedia.org/wiki/Info-ZIP para obter recursos


De que tipo de limitações você está falando?
— Pacerier

editou e forneceu um link
— Erik Aronesty

9

As instalações Barebones Unix não contêm descompactação (ou seja, instalações de servidor), mas sempre contêm tar e gzip . Se seu público for servidor, eu usaria o gzip .

Além disso, o gzip tem maior compactação que o zip , portanto o arquivo será menor.


11
Eu não diria que o gzip comprime melhor que o ZIP. Ambos usam o mesmo algoritmo DEFLATE, e todas as comparações feitas fornecem resultados semelhantes no tamanho do arquivo.
— grawity

4
Bem, o tar.gz comprime o arquivo inteiro de uma só vez, enquanto o zip compacta arquivos individualmente. Para muitos arquivos pequenos, a primeira abordagem geralmente gera arquivos visivelmente menores, porque redundâncias podem ser usadas entre arquivos. A diferença não é enorme.
— sleske

3

Sim, isso importa. Tar é um arquivador. E no tar.gz, compactamos esse arquivo.

Zip é um arquivador e compressor.

Se você comparar a compactação, pela minha experiência, o gzip é muito melhor que o zip.

E a outra diferença significativa é mencionada em outra resposta . Se você tem um arquivo muito grande e deseja extrair um arquivo pequeno, o Zip permite fazer isso. Mas com o tar.gz, você precisa extrair o arquivo inteiro.


Não é um arquivo compactado com gzip, mas um gzip com arquivos arquivados. É por isso que você precisa extrair todo o arquivo.
— M93a

2

A decisão basicamente se resume a estes:

  • O GZIP mantém permissões de arquivo Unix , como arquivos que podem ser executados.

  • Por outro lado, o ZIP funciona imediatamente no Windows.


1

tare gzipsão muito mais comuns em * nix-es do que unzip. Por exemplo, no momento no meu arch-2009.08 não há unzip.


6
Mas existe bsdtar(parte de libarchive), que lida com ZIP muito bem.
— grawity

Opa: "> Não sabia disso. Obrigado! :-)
— nc3b
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.