Comandos Linux gzip, gunzip e zcat
Nos sistemas operacionais do tipo Unix, os comandos gzip , gunzip e zcat são usados para compactar ou expandir arquivos no formato GNU GZIP .
Descrição
O gzip reduz o tamanho dos arquivos nomeados usando a codificação Lempel – Ziv (LZ77). Sempre que possível, cada arquivo é substituído por um com a extensão .gz , mantendo os mesmos modos de propriedade , tempos de acesso e modificação. (A extensão padrão é -gz para VMS , z para MSDOS , OS / 2 FAT , Windows NT FAT e Atari .) Se nenhum arquivo for especificado ou se o nome de um arquivo for ” – “, a entrada padrão será compactada para o padrão resultado. gzip só tentará compactar arquivos regulares. Em particular, ele ignora links simbólicos .
Se o nome do arquivo compactado for muito longo para o sistema de arquivos , o gzip o truncará. O gzip tenta truncar apenas as partes do nome do arquivo com mais de 3 caracteres . (Uma parte é delimitada por pontos.) Se o nome consistir apenas em partes pequenas, as partes mais longas serão truncadas. Por exemplo, se os nomes de arquivos estão limitados a 14 caracteres, gzip.msdos.exe é comprimido para gzi.msd.exe.gz . Os nomes não são truncados em sistemas que não têm um limite no tamanho do nome do arquivo.
Por padrão, o gzip mantém o nome do arquivo original e o carimbo de data e hora no arquivo compactado. Eles são usados ao descompactar o arquivo com a opção -N . Essa configuração é útil quando o nome do arquivo compactado foi truncado ou quando o carimbo de data e hora não foi preservado após a transferência do arquivo .
Os arquivos compactados podem ser restaurados para sua forma original usando gzip -d ou gunzip ou zcat . Se o nome original salvo no arquivo compactado não for adequado para seu sistema de arquivos, um novo nome será construído a partir do original para torná-lo legal.
gunzip pega uma lista de arquivos em sua linha de comando e substitui cada arquivo cujo nome termina com .gz , -gz , .z , -z ou _z (caso de ignorância) e que começa com o número mágico correto com um arquivo descompactado sem a opção extensão original. O gunzip também reconhece as extensões especiais .tgz e .taz como atalhos para .tar.gz e .tar.Z, respectivamente. Ao compactar, o gzip usa a extensão .tgz, se necessário, em vez de truncar um arquivo com uma extensão .tar .
Atualmente, o gunzip pode descomprimir arquivos criados por gzip , zip , compactar , compactar -H ou pacote . A detecção do formato de entrada é automática. Ao usar os dois primeiros formatos, o gunzip verifica um CRC de 32 bits . No pacote , o gunzip verifica o comprimento não compactado. O formato de compactação padrão não foi projetado para permitir verificações de consistência. No entanto, o gunzip às vezes é capaz de detectar um arquivo .Z ruim . Se você receber um erro ao descompactar um arquivo .Z , não presuma que o arquivo .ZO arquivo está correto porque a descompactação padrão não se queixa. Isso geralmente significa que a descompactação padrão não verifica sua entrada e gera felizmente a saída de lixo. O SCO comprimir -H formato (método de compactação lzh) não incluem uma CRC, mas também permite que algumas verificações de consistência.
Os arquivos criados por zip podem ser descompactados pelo gzip apenas se eles tiverem um único membro compactado com o método ‘deflation’. Este recurso destina-se apenas para ajudar a conversão de tar.zip arquivos para o tar.gz formato. Para extrair um arquivo zip com um único membro, use um comando como:
gunzip <foo.zip
ou:
gunzip -S .zip foo.zip
Para extrair arquivos zip com vários membros, use descompactar em vez de gunzip .
O zcat é idêntico ao gunzip -c . (Em alguns sistemas, o zcat pode ser instalado como gzcat para preservar o link original para compactar .) O zcat descompacta uma lista de arquivos na linha de comandos ou em sua entrada padrão e grava os dados não compactados na saída padrão. O zcat descompactará arquivos com o número mágico correto, independentemente de terem ou não um sufixo .gz .
O gzip usa o algoritmo Lempel-Ziv usado no zip e no PKZIP . A quantidade de compressão obtida depende do tamanho da entrada e da distribuição de substrings comuns. Normalmente, textos como código fonte ou inglês são reduzidos de 60 a 70%. A compactação geralmente é muito melhor do que a alcançada pelo LZW (como usado na compressa ), pela codificação Huffman (como usada na embalagem ) ou pela codificação adaptativa Huffman ( compacta ).
A compactação é sempre realizada, mesmo se o arquivo compactado for um pouco maior que o original. O pior caso de expansão é de alguns bytes para o cabeçalho do arquivo gzip , mais 5 bytes a cada bloco de 32 K ou uma taxa de expansão de 0,015% para arquivos grandes. Observe que o número real de blocos de disco usados quase nunca aumenta. O gzip preserva o modo, a propriedade e os carimbos de data e hora dos arquivos ao compactar ou descompactar.
Sintaxe
gzip [-acdfhlLnNrtvV19] [ sufixo -S ] [ nome ...]
gunzip [-acfhlLnNrtvV] [-S sufixo ] [ nome ...]
zcat [-fhLV] [ nome ...]
Opções
-a , –ascii | Modo de texto ASCII : converta o final de linhas usando convenções locais. Esta opção é suportada apenas em alguns sistemas não Unix. Para MSDOS, o CR LF é convertido em LF ao compactar, e LF é convertido em CR LF ao descompactar. | ||||||||||||||
-c , –stdout , –to-stdout | Escreva a saída na saída padrão; mantenha os arquivos originais inalterados. Se houver vários arquivos de entrada, a saída consistirá em uma sequência de membros compactados independentemente. Para obter uma melhor compactação, concatene todos os arquivos de entrada antes de compactá-los. | ||||||||||||||
-d , –decompress , –uncompress | Descomprimir. | ||||||||||||||
-f , –force | Força a compactação ou descompactação, mesmo se o arquivo tiver vários links ou o arquivo correspondente já existir, ou se os dados compactados forem lidos ou gravados em um terminal. Se os dados de entrada não estiverem em um formato reconhecido pelo gzip , e se a opção –stdout também for fornecida, copie os dados de entrada sem alterar a saída padrão: deixe o zcat se comportar como gato . Se -f não for fornecido, e quando não estiver em execução em segundo plano, o gzip solicitará que verifique se um arquivo existente deve ser substituído . | ||||||||||||||
-h , –help | Exiba uma tela de ajuda e saia. | ||||||||||||||
-l , –list | Para cada arquivo compactado, liste os seguintes campos:
O tamanho não compactado é fornecido como -1 para arquivos que não estão no formato gzip , como arquivos .Z compactados . Para obter o tamanho descompactado para esse arquivo, você pode usar: arquivo zcat.Z | wc -c Em combinação com a opção –verbose , os seguintes campos também são exibidos:
Os métodos de compactação atualmente suportados são deflate , compress , lzh (SCO compress -H ) e pack . O crc é fornecido como ffffffff para um arquivo que não está no formato gzip . Com –name , o nome descompactado, a data e a hora são aqueles armazenados no arquivo compactado, se presente. Com –verbose , o total de tamanhos e a taxa de compactação de todos os arquivos também são exibidos, a menos que alguns tamanhos sejam desconhecidos. Com –quiet , o título e as linhas de totais não são exibidos. | ||||||||||||||
-L , –license | Exiba a licença gzip e saia. | ||||||||||||||
-n , –no-name | Ao compactar, não salve o nome do arquivo original e o carimbo de data e hora por padrão. (O nome original é sempre salvo se o nome tiver que ser truncado.) Ao descompactar, não restaure o nome do arquivo original se presente (remova apenas o sufixo gzip do nome do arquivo compactado) e não restaure o carimbo de data / hora original, se presente (copie-o do arquivo compactado). Esta opção é o padrão ao descompactar. | ||||||||||||||
-N , –name | Ao compactar, sempre salve o nome do arquivo original e a data e hora; esse é o padrão. Ao descompactar, restaure o nome do arquivo original e o carimbo de hora, se houver. Essa opção é útil em sistemas que têm um limite no tamanho do nome do arquivo ou quando o registro de data e hora foi perdido após a transferência do arquivo. | ||||||||||||||
-q , –quiet | Suprima todos os avisos. | ||||||||||||||
-r , –recursive | Viaje pela estrutura de diretórios recursivamente . Se qualquer um dos nomes de arquivo especificados na linha de comando forem diretórios, o gzip descerá para o diretório e compactará todos os arquivos que encontrar lá (ou descompactá-los no caso do gunzip ). | ||||||||||||||
-S. suf , –sufixo. suf | Ao compactar, use o sufixo . suf em vez de .gz . Qualquer sufixo não vazio pode ser fornecido, mas sufixos diferentes de .z e .gz devem ser evitados para evitar confusão quando os arquivos são transferidos para outros sistemas. Ao descompactar, adicione . suf no início da lista de sufixos a tentar, ao derivar um nome de arquivo de saída de um nome de arquivo de entrada. | ||||||||||||||
-t , –test | Teste. Verifique a integridade do arquivo compactado. | ||||||||||||||
-v , –verbose | Verbose . Exibe o nome e a porcentagem de redução para cada arquivo compactado ou descompactado. | ||||||||||||||
-V , –version | Versão. Exiba o número da versão e as opções de compilação e saia. | ||||||||||||||
– # , – rápido , – melhor | Regule a velocidade da compactação usando o dígito especificado # , onde -1 ou –fast indica o método de compactação mais rápido (menos compactação) e -9 ou –best indica o método de compactação mais lento (melhor compactação). O nível de compactação padrão é -6 (ou seja, inclinado para alta compactação em detrimento da velocidade). |
Uso Avançado
Vários arquivos compactados podem ser concatenados. Nesse caso, o gunzip extrairá todos os membros de uma só vez. Por exemplo:
gzip -c arquivo1> foo.gz
gzip -c arquivo2 >> foo.gz
Então:
gunzip -c foo
é equivalente a:
cat file1 file2
In case of damage to one member of a .gz file, other members can still be recovered (if the damaged member is removed). However, you can get better compression by compressing all members at once:
cat file1 file2 | gzip > foo.gz
compresses better than:
gzip -c file1 file2 > foo.gz
If you want to recompress concatenated files to get better compression, do:
gzip -cd old.gz | gzip > new.gz
If a compressed file consists of several members, the uncompressed size and CRC reported by the –list option applies to the last member only. If you need the uncompressed size for all members, you can use:
gzip -cd file.gz | wc -c
If you want to create a single archive file with multiple members so that members can later be extracted independently, use an archiver such as tar or zip. GNU tar supports the -z option to invoke gzip transparently. gzip is designed as a complement to tar, not as a replacement.
Environment
The environment variable GZIP can hold a set of default options for gzip. These options are interpreted first and can be overwritten by explicit command line parameters. For example:
for sh:
GZIP="-8v --name"; export GZIP
for csh:
setenv GZIP "-8v --name"
for MSDOS:
set GZIP=-8v --name
On Vax/VMS, the name of the environment variable is GZIP_OPT, to avoid a conflict with the symbol set for invocation of the program.
Examples
zcat myfiles.tar.gz | more
Prints the contents of all files within the gzipped tar archive myfiles.tar.gz, piping the output to the more command, which pages the output (pauses at the end of each page).
gzip backup.tar
Compresses the tar archive backup.tar, and renames it backup.tar.gz.
gunzip backup.tar.gz
Uncompresses the gzipped file backup.tar.gz, renaming it backup.tar.
gzip -r backupfolder
Compacta recursivamente todos os arquivos na pasta de backup da pasta e todos os arquivos em qualquer subdiretório dessa pasta e fornece a extensão .gz .
gunzip -r backupfolder
Descomprime recursivamente todos os arquivos compactados com gzip na pasta backup backup e remove a extensão .gz dos nomes dos arquivos.
gzip -c meuarquivo.txt> meuarquivo.txt.gz
Compacta o arquivo myfile.txt , gravando os dados do arquivo compactado na saída padrão, que neste caso é redirecionada para um arquivo, myfile.txt.gz . O resultado é que o arquivo original e o arquivo compactado com gz existirão depois que o comando for executado.
zcat myfile.txt.gz
Imprime o conteúdo não compactado do arquivo compactado myfile.txt.gz . A saída é idêntica à impressão do conteúdo do arquivo descompactado com o comando cat myfile.txt .
gunzip -c meuarquivo.txt.gz> meuarquivo.txt
Descompacta o arquivo compactado como arquivo myfile.txt.gz para a saída padrão, que neste caso é redirecionada para o arquivo myfile.txt . Se meuarquivo.txt já existe, o shell irá pedir -lhe para substituí-lo (ou não).
GorjetaConsulte o uso avançado acima para obter exemplos adicionais.
Comandos relacionados
cat – gera o conteúdo de um arquivo.
compactar – Comprime um arquivo ou arquivos.
tar – Crie, modifique, liste o conteúdo e extraia arquivos de arquivos tar.
descompactar – Extrai arquivos de arquivos compactados.
descompacte – liste , teste e extraia arquivos compactados em um arquivo zip.
zip – Um utilitário de compactação e arquivamento.