Cookies para estatística e publicidade
Usamos cookies de estatística e de publicidade, ambos enviados ao Google. Recusar não muda nada do que você vê.Ler a página de privacidade
Aqui você converte XZ para GZ de graça e sem conta: solte o arquivo acima e em poucos segundos o resultado está pronto para baixar. O arquivo viaja criptografado até o nosso servidor, é convertido lá e é apagado assim que o trabalho termina.
Até 100 arquivos de uma vez. Formatos misturados não são problema.
Eles são convertidos um após o outro e baixados juntos em um ZIP.
XZ para GZ
Quem chega aqui raramente criou o arquivo. Um projeto upstream publica um .tar.xz, e agora precisa ser servido para outra pessoa: espelhado num repositório interno de artefatos, anexado a um release interno, colocado atrás de um link de download para um público cujas máquinas você não controla. O upstream escolheu XZ otimizando banda para um público técnico. Você está otimizando para quem clica no link.
A outra versão é um ambiente de execução em vez de uma pessoa. Uma etapa de carregamento de dados em Python ou Go abre gzip com um import da biblioteca padrão e precisa de uma dependência para qualquer outra coisa; uma função serverless ou uma imagem de contêiner reforçada muitas vezes não pode ter uma. Em todos esses casos a restrição é externa, e a recomendação honesta para quem não tem essa restrição é deixar o XZ exatamente como está.
A vantagem do gzip não é técnica, é histórica, e se acumula. O DEFLATE foi publicado como RFC 1951 em maio de 1996 e o contêiner do gzip como RFC 1952 no mesmo mês; o mesmo algoritmo está dentro do PNG, de todo arquivo ZIP, do Content-Encoding: gzip do HTTP, de um objeto Git e de um JAR do Java. Qualquer plataforma que faça qualquer uma dessas coisas já tem uma implementação de DEFLATE vinculada.
O XZ, de 2009, não teve esse veículo. É um formato excelente e precisa ser instalado como tal. No Linux é trivial; em qualquer outro lugar é uma decisão que alguém precisa tomar. Quando você está entregando um arquivo a um ambiente desconhecido, essa diferença é toda a questão.
A distância entre os dois formatos é um único número: o DEFLATE do gzip busca numa janela de 32 KB, e o LZMA2 do XZ trabalha com um dicionário de até 64 MB. Quando o gzip está comprimindo o byte um milhão, ele consegue olhar até o byte novecentos e sessenta e oito mil e nada além; o XZ ainda consegue ver o começo do arquivo.
Em arquivos com muitos arquivos parecidos isso não é uma diferença marginal. Duzentos arquivos-fonte compartilhando um cabeçalho de licença, um ano de linhas de log usando os mesmos quarenta modelos — o XZ aprende cada padrão uma vez e o gzip reaprende constantemente. Onde isso não aparece é em arquivos de JPEGs, MP4s ou qualquer coisa já comprimida.
O gzip decodifica do início ao fim com uma janela fixa de 32 KB e sem índice, o que dá origem à sua propriedade mais útil: um tarball gzipado pode ser consumido conforme chega. curl … | tar xzf - descompacta um download que nunca toca o disco, e um servidor web pode comprimir uma resposta que ainda não terminou de gerar.
O XZ também pode ser transmitido, mas a memória necessária é proporcional ao seu dicionário em vez de fixa. Um pipeline onde o consumidor é pequeno — um dispositivo embarcado, um contêiner com limite de memória — pode consumir um fluxo gzip de comprimento ilimitado e talvez não consiga consumir um fluxo xz de jeito nenhum.
A conversão extrai o arquivo e escreve um TAR novo a partir do conteúdo antes de comprimir. Cada arquivo interno sai byte a byte idêntico — isso é um reempacotamento sem perdas — mas o tarball é novo, então a ordem dos membros, os carimbos de data e as permissões podem diferir do upstream, e nenhum checksum publicado vai bater com o resultado.
Para um espelho isso é uma questão de apresentação, não de correção. Publique seu próprio hash do arquivo que você está de fato servindo, e diga claramente que o artefato canônico é o .tar.xz do upstream com a assinatura deles. O que você não deve fazer é servir um arquivo reempacotado sob o hash do upstream.
Uma coisa pequena melhora nessa direção. Um fluxo gzip tem um campo de cabeçalho para o nome original do arquivo e um fluxo xz não tem nenhum — o xz guarda uma verificação de integridade e nada sobre a origem dos dados. Essa assimetria é por isso que gunzip dataset.gz pode devolver dataset.tar enquanto unxz dataset.xz deixa você com um arquivo chamado dataset que acaba sendo um arquivo compactado.
É uma cortesia, não uma garantia: muitas ferramentas escrevem um nome genérico no campo e muitas outras o ignoram na extração. A extensão ainda é o que realmente será lida, então nomeie o download .tar.gz antes de publicar.
Se a restrição é puramente memória em vez de disponibilidade, o bzip2 vale considerar em vez disso: trabalha em blocos independentes de no máximo 900 KB, então precisa de quase nada para descompactar, e comprime melhor que gzip em texto. O custo é o tempo de descompressão, porque desfazer uma transformada de Burrows-Wheeler é computação real.
O teste é qual falha você está de fato contornando. Algo reportou não conseguir alocar memória, num dispositivo lento com bastante tempo — bzip2 é uma resposta razoável. Algo não reconheceu o formato, ou você está entregando o arquivo a pessoas em vez de máquinas — gzip, sem hesitar.
No nosso servidor, não no seu navegador. A maioria das ferramentas deste site converte no seu próprio aparelho e diz isso claramente; trabalho com arquivos compactados é uma das exceções, porque precisa de 7-Zip, xz e gzip como programas de verdade. O arquivo viaja por conexão criptografada até um contêiner sem acesso à internet.
Cada trabalho recebe um diretório temporário num sistema de arquivos baseado em memória, descartado assim que termina, e é encerrado depois de sessenta segundos. O plano gratuito aceita 25 MB por arquivo enviado, e o arquivo é recusado antes da extração se declarar expansão acima de 2 GB.
| XZ | GZ | |
|---|---|---|
| Nome completo | Arquivo XZ | Arquivo Gzip |
| Extensão do arquivo | .xz | .gz, .tgz |
| Tipo de mídia | application/x-xz | application/gzip |
| Compressão | Sem perdas — nada é descartado | Sem perdas — nada é descartado |
| Publicado pela primeira vez | 2009 | 1992 |
| Especificação | — | RFC 1952 |
| Licença | Padrão aberto | Padrão aberto |
| Situação hoje | Atual | Atual |
| Abre no navegador | Nenhum navegador | Nenhum navegador |
| Considerado no lugar | BZ2, 7Z | BZ2, ZIP |
Nada é descartado. XZ e GZ guardam o conteúdo sem perda, então a conversão troca a embalagem e não a qualidade — e pode ser repetida sem que o estrago se acumule.
7-Zip e Keka leem tanto XZ quanto GZ, então dá para comparar o resultado com o original sem um segundo programa.
GZ trabalha com 32 KB de cada vez, contra 8 MB de XZ: é dentro desse intervalo que uma repetição precisa caber para poder ser comprimida. É daí que vem a diferença de compressão e por isso ele é o mais rápido dos dois.
GZ e de 1992, descrito em RFC 1952. gzip, 7-Zip e Keka leem o formato.
GZ foi publicado em 1992 e XZ em 2009. O mais antigo costuma ser o arquivo mais seguro para entregar; o mais novo faz o mesmo com menos bytes.
É: esta conversão precisa de um software que não roda num navegador. O arquivo viaja criptografado até o nosso servidor, é apagado assim que o trabalho termina e o resultado, depois de 60 minutos. O trabalho é feito por 7-Zip, o compactador, na sua forma de linha de comando.
É, até 100 conversões por dia para arquivos de até 25 MB. Esse único limite existe porque esta conversão roda num servidor que nós pagamos. No resto aqui não há nada limitado, e marca d’água não existe em caso nenhum. O limite existe porque 7-Zip precisa de uma máquina nossa para rodar.
Não. GZ guarda o mesmo conteúdo sem jogar nada fora: o resultado é idêntico em qualidade ao original. Os arquivos saem byte a byte iguais. O que não sobrevive é o que o contêiner sabia *sobre* eles e não o que havia *dentro* deles: uma senha e, em alguns formatos, as permissões e as datas originais.
Nada é descartado. XZ e GZ guardam o conteúdo sem perda, então a conversão troca a embalagem e não a qualidade — e pode ser repetida sem que o estrago se acumule.