Comandos Linux gzip, gunzip e zcat
Em sistemas operacionais do tipo Unix, o comando gzip cria, lista, modifica e extrai dados dos arquivos GZIP .
O comando gunzip extrai dados dos arquivos GZIP.
O comando zcat imprime o conteúdo dos arquivos GZIP.
Descriçã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 , acesso e tempos de 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 saída . O gzip tentará apenas 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 arquivo estiverem limitados a 14 caracteres, o gzip.msdos.exe será compactado 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 . Isso é útil quando o nome do arquivo compactado foi truncado ou quando o registro 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 .Z esteja 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 formato SCH compress -H (método de compressão lzh ) não inclui um CRC, mas também permite 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 a ajudar na conversão de arquivos tar.zip para o formato tar.gz. 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 e o gzip preserva o modo, a propriedade e os carimbos de data e hora dos arquivos ao compactar ou descompactar.
O formato de arquivo gzip é especificado em P. Deutsch, versão 4.3 da especificação de formato de arquivo GZIP , https://www.ietf.org/rfc/rfc1952.txt , Internet RFC 1952 (maio de 1996 ). O formato de deflação do zip está especificado em P. Deutsch, DEFLATE Compressed Data Format Specification versão 1.3 , https://www.ietf.org/rfc/rfc1951.txt , Internet RFC 1951 (maio de 1996).
Sintaxe
gzip [-acdfhlLnNrtvV19] [ sufixo -S] [ nome ...]
gunzip [-acfhlLnNrtvV] [-S sufixo] [ nome ...]
zcat [-fhLV] [nome ...]
Opções
-a –ascii | Modo de texto ascii : converta o fim 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 | Grava 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 –dcompress –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:
tamanho compactado: tamanho do arquivo compactado; tamanho descompactado: tamanho do arquivo descompactado; razão: taxa de compressão (0,0% se desconhecido); nome não compactado: nome do arquivo não compactado. 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: método: método de compressão; crc: o CRC de 32 bits dos dados não compactados; data e hora: registro de data e hora para o arquivo descompactado. 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 – sem nome | Ao compactar, não salve o nome do arquivo original e o carimbo de data / 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 –recursivo | 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 –suffix .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, inclua .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. |
– # –fast –melhor | Regule a velocidade da compactação usando o dígito especificado # , onde (por exemplo) -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
Em caso de danos a um membro de um arquivo .gz , outros membros ainda poderão ser recuperados (se o membro danificado for removido). No entanto, você pode obter uma melhor compactação compactando todos os membros de uma vez, por exemplo:
gato arquivo1 arquivo2 | gzip> foo.gz
… que comprime melhor que:
gzip -c arquivo1 arquivo2> foo.gz
Se você deseja recompactar arquivos concatenados para obter uma melhor compactação, faça:
gzip -cd old.gz | gzip> new.gz
Se um arquivo compactado consistir em vários membros, o tamanho descompactado e o CRC relatado pela opção –list se aplicarão apenas ao último membro. Se você precisar do tamanho descompactado para todos os membros, poderá usar:
gzip -cd file.gz | wc -c
Se você deseja criar um único arquivo morto com vários membros para que os membros possam ser extraídos posteriormente independentemente, use um arquivador como tar ou zip . O GNU tar suporta a opção -z para chamar o gzip de forma transparente. O gzip foi desenvolvido como um complemento ao tar , não como um substituto.
Meio Ambiente
A variável de ambiente GZIP pode conter um conjunto de opções padrão para o gzip. Essas opções são interpretadas primeiro e podem ser substituídas por parâmetros explícitos da linha de comando. Por exemplo, para sh :
GZIP = "- 8v --name"; exportar GZIP
para csh :
setenv GZIP "-8v --name"
para MSDOS:
defina GZIP = -8v --name
No Vax / VMS , o nome da variável de ambiente é GZIP_OPT , para evitar um conflito com o conjunto de símbolos para a chamada do programa.
Exemplos
Compressão:
gzip file.txt
No exemplo acima, o comando compactaria o arquivo file.txt como file.txt.gz no diretório atual.
Expansão:
gunzip file.txt.gz
No exemplo acima, o comando extrairia o arquivo.txt de file.txt.gz.
GorjetaVocê também pode usar o comando descompactar se precisar extrair o conteúdo de um arquivo compactado em zip .
Notase você estiver lidando com um tarball (extensão .tar.gz), use o comando tar para extrair arquivos.
tar -zxvf myfile.tar.gz
No exemplo acima, isso extrairia o conteúdo do myfile.tar.gz no diretório atual.
GorjetaConsulte o uso avançado acima para obter mais exemplos.
Comandos relacionados
compactar – Comprime um arquivo ou arquivos.
pacote – Compactar arquivos usando um algoritmo de Huffman.
tar – Crie, modifique, liste o conteúdo e extraia arquivos de arquivos tar.
descompacte – liste , teste e extraia arquivos compactados em um arquivo zip.
zcat – Imprima o conteúdo não compactado dos arquivos compactados