Categories: Tecnologia

Como compactar e descompactar arquivos com Gzip no Linux

fatmawati achmad zaenuri/Shutterstock.com

Existem muitos utilitários de compactação de arquivos , mas o que você certamente encontrará em todas as distribuições Linux é o gzip. Se você aprender a usar apenas uma ferramenta de compactação, ela deve ser gzip.

Algoritmos e árvores

A gzipferramenta de compressão de dados foi escrita no início dos anos 90 e ainda é encontrada em todas as distribuições Linux. Existem outras ferramentas de compactação disponíveis, mas não importa em qual computador Linux você precise trabalhar, você encontrará gzipnele. Então, se você sabe como usar gzip, você está pronto para ir sem a necessidade de instalar nada.

gzipé uma implementação do algoritmo DEFLATE que foi inventado – e patenteado – por  Phil Katz  do  PKZIP  famoso. O algoritmo DEFLATE melhorou os algoritmos de compressão anteriores que operavam em variações de um tema. Os dados a serem compactados são verificados e as strings exclusivas são identificadas e adicionadas a uma árvore binária.

As strings exclusivas recebem um token de ID exclusivo em virtude de  sua posição na árvore . Os tokens são usados ​​para substituir as strings nos dados e, como os tokens são menores do que os dados que substituíram, o arquivo é compactado. Substituir os tokens pelas strings originais re-infla os dados de volta ao seu estado descompactado.

O algoritmo DEFLATE adicionou a reviravolta de que as strings encontradas com mais frequência receberam os menores tokens e as strings encontradas com menos frequência receberam as maiores. O algoritmo DEFLATE também incorporou ideias de dois métodos de compressão anteriores,  codificação Huffman  e  compressão LZ77 .

No momento da escrita, o algoritmo DEFLATE tem quase três décadas. Três décadas atrás, os custos de armazenamento de dados eram altos e as velocidades de transmissão eram lentas. A compactação de dados era de vital importância.

O armazenamento de dados é muito mais barato hoje e as velocidades de transmissão são muito mais rápidas. Mas temos muito mais dados para armazenar, e as pessoas em todo o mundo estão acessando armazenamento em nuvem e serviços de streaming . A compactação de dados ainda é de  vital  importância, mesmo que tudo o que você esteja fazendo seja encolher algo que precise carregar ou transmitir, ou esteja tentando recuperar algum espaço em um disco rígido local .

O comando gzip

Quanto maior for um arquivo, melhor será a compactação. Isto é devido a duas razões. Uma é que haverá muitas sequências de bytes repetidas e idênticas em um arquivo grande. A segunda razão é que a lista de strings e tokens precisa ser armazenada no arquivo compactado para que a descompactação possa ocorrer. Com um arquivo muito pequeno, essa sobrecarga pode eliminar os benefícios da compactação. Mas mesmo com um arquivo relativamente pequeno, é provável que haja alguma redução no tamanho.

Compactando um arquivo

Para compactar um arquivo, basta passar o nome do arquivo para o gzipcomando. Vamos verificar o tamanho original do arquivo, compactá-lo e, em seguida, verificar o tamanho do arquivo compactado.

ls -lh calc-sheet.ods
gzip calc-sheet.ods
ls -lh cal-*

O arquivo original, uma planilha chamada “calc-sheet.ods”, tem 11 KB, e o arquivo compactado, também conhecido como arquivo morto, tem 9,3 KB. Observe que o nome do arquivo é o nome do arquivo original com “.gz” anexado a ele.

O primeiro uso do lscomando tem como alvo um arquivo específico, a planilha. O segundo uso de lsprocura todos os arquivos que começam com “calc-”, mas encontra apenas o arquivo compactado. Isso porque, por padrão, gzipcria o arquivo morto e exclui o arquivo original.

Isso não é um problema. Se você precisar do arquivo original, poderá recuperá-lo do arquivo morto. Mas se preferir manter o arquivo original, você pode usar a -kopção (manter).

gzip -k calc-sheet.ods
ls -lh calc-sheet.*

Desta vez, o arquivo ODS original é mantido.

Descompactando um arquivo

Para descompactar um arquivo GZ, use a -dopção (descompactar). Isso extrairá o arquivo compactado do arquivo e o descompactará para que seja indistinguível do arquivo original.

ls calc-sheet.*
gzip -d calc-sheet.ods.gz
ls calc-sheet.*

Desta vez, podemos ver que gzipexcluiu o arquivo morto após extrair o arquivo original. Para reter o arquivo, precisamos usar a -kopção (manter) novamente, bem como a -dopção (descompactar).

ls calc-sheet.*
gzip -d calc-sheet.ods.gz
ls calc-sheet.*

Desta vez, o gzip não exclui o arquivo compactado.

Descompactando e sobrescrevendo

Se você tentar extrair um arquivo em um diretório onde o arquivo original — ou um arquivo diferente com o mesmo — existe,   gzip  será solicitado que você opte por abandonar a extração ou substituir o arquivo existente.

gzip -d arquivo-texto.txt.gz

Se você sabe de antemão que está feliz em ter o arquivo no diretório substituído pelo arquivo do arquivo morto, use a opção -f (forçar).

gzip -df arquivo-texto.txt.gz

O arquivo é substituído e você retorna silenciosamente à linha de comando.

Compactando Árvores de Diretórios

A -ropção (recursiva) faz gzipcom que os arquivos sejam compactados em uma árvore de diretórios inteira. Mas o resultado pode não ser o que você espera.

Aqui está a árvore de diretórios que vamos usar neste exemplo. Cada diretório contém um arquivo de texto.

nível de árvore1

Vamos usar gzipna árvore de diretórios e ver o que acontece.

gzip -r nível1/
nível de árvore1

O resultado é gzipa criação de um arquivo para cada arquivo de texto na estrutura de diretórios. Ele não criou um arquivo de toda a árvore de diretórios. Na verdade, gzipsó pode colocar um único arquivo em um arquivo.

Podemos criar um arquivo que contenha uma árvore de diretórios e todos os seus arquivos, mas precisamos colocar outro comando em ação. O tarprograma é usado para criar arquivos de muitos arquivos, mas não possui rotinas próprias de compactação. Mas usando as opções apropriadas com tar, podemos fazer  tar o push do arquivo morto  gzip. Dessa forma, obtemos um arquivo compactado e um arquivo multi-arquivo ou multi-diretório.

tar -czvf level1.tar.gz level1

As taropções são:

  • c : Crie um arquivo.
  • z : Transfira os arquivos gzip.
  • v : Modo detalhado. Imprima na janela do terminal o que tarestá acontecendo.
  • f level1.tar.gz : Nome do arquivo a ser usado para o arquivo morto.

Isso arquiva a estrutura da árvore de diretórios e todos os arquivos dentro da árvore de diretórios.

Obtendo informações sobre arquivos

A -lopção (lista) fornece algumas informações sobre um arquivo morto. Ele mostra os tamanhos compactados e não compactados do arquivo no arquivo morto, a taxa de compactação e o nome do arquivo.

gzip -l level1.tar.gz
gzip -l arquivo-texto.txt.gz

Você pode verificar a integridade de um arquivo morto com a -topção (teste).

gzip -t level1.tar.gz

Se tudo estiver bem, você retornará silenciosamente à linha de comando. Nenhuma notícia é boa notícia.

Se o arquivo estiver corrompido ou não for um arquivo, você será informado sobre isso.

gzip -t not-an-archive.gz

Velocidade versus compressão

Você pode optar por priorizar a velocidade de criação do arquivo ou o grau de compactação. Você faz isso fornecendo um número como opção, de -1cima para baixo -9. A -1opção oferece a velocidade mais rápida com o sacrifício da compressão e -9a maior compressão com o sacrifício da velocidade.

A menos que você forneça uma dessas opções, o gzip usa -6.

gzip -1 calc-sheet.ods
ls -lh calc-sheet.ods.gz
gzip -9 calc-sheet.ods
ls -lh calc-sheet.ods.gz
gzip -6 calc-sheet.ods
ls -lh calc-sheet.ods.gz

Com um arquivo tão pequeno como esse, não vimos nenhuma diferença significativa na velocidade de execução, mas houve uma pequena diferença na compactação.

Curiosamente, não há diferença entre usar a compactação de nível 9 e a compactação de nível 6. Você só pode extrair tanta compactação de qualquer arquivo e, neste caso, esse limite foi atingido com a compactação de nível 6. Aumentar para 9 não trouxe redução adicional no tamanho do arquivo. Com arquivos maiores , a diferença entre o nível 6 e o ​​nível 9 seria mais pronunciada.

Comprimido, Não Protegido

Não confunda compactação com criptografia ou qualquer forma de proteção. A compactação de um arquivo não oferece segurança ou privacidade aprimorada. Qualquer pessoa com acesso ao seu arquivo pode usá gzip-lo para descompactá-lo.

maisroot

Recent Posts

O novo aplicativo “PC Manager” da Microsoft se parece muito com o CCleaner

Muitos aplicativos de limpeza estão disponíveis para Windows ao longo dos anos, mas hoje em…

1 ano ago

Como reiniciar um PS4

Seu PlayStation 4 está congelado? Seus jogos favoritos continuam travando? Reiniciar seu PS4 pode resolver…

1 ano ago

Veja por que as reticências são tão assustadoras ao enviar mensagens de texto…

A popularidade das mensagens de texto significou aprender uma forma totalmente nova de comunicação. Você…

1 ano ago

O telescópio James Webb acaba de capturar os “Pilares da Criação”

A foto dos "Pilares da Criação" tirada pelo Telescópio Espacial Hubble é uma das fotos…

1 ano ago

Você poderá baixar o Proton Drive mais cedo do que pensa

O Proton Drive saiu de seu estágio beta há algumas semanas, mas o aplicativo real…

1 ano ago

Como aumentar o zoom no Photoshop

Para ver suas fotos mais de perto ou para uma edição precisa , você pode…

1 ano ago