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?

rwallace
fonte

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).

Dilema
fonte
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.

Zam
fonte
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.

BloodPhilia
fonte
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

Erik Aronesty
fonte
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.

Rwky
fonte
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.

Rakesh Reddy
fonte
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.

Alberto Salvia Novella
fonte
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.

nc3b
fonte
6
Mas existe bsdtar(parte de libarchive), que lida com ZIP muito bem.
grawity
Opa: "> Não sabia disso. Obrigado! :-)
nc3b