Linux / Comando bzip2: comprimir arquivos e conferir a recuperação

O comando bzip2 comprime arquivos no formato .bz2. Por padrão, uma compressão bem-sucedida substitui o arquivo de entrada pelo resultado comprimido; use -k para manter o original ou -c para enviar o resultado à saída padrão e escolher outro nome.

Com nomes de arquivos como argumentos, bzip2 gera um resultado para cada entrada. Ele não empacota uma árvore de diretórios em um único arquivo: para essa tarefa, combine a compressão com o comando tar, por exemplo usando sua opção -j para bzip2.

Sintaxe e preparação

bzip2 [opções] [arquivos...]

Essa linha é um modelo de sintaxe, não um comando para copiar literalmente. Substitua os trechos entre colchetes pelos argumentos necessários e consulte man bzip2 na máquina em que trabalhará; opções semelhantes às do gzip não garantem que todos os detalhes sejam iguais.

Prepare uma cópia dos dados em uma pasta separada, confirme o diretório atual e confira se os nomes de saída estão livres. Nos exemplos, data.csv é o arquivo de entrada já existente; data.csv.bz2 e data-copy.csv.bz2 devem ser nomes novos. Se o conteúdo estiver sendo alterado por outro programa, obtenha uma cópia consistente antes de comprimi-lo: a compressão não resolve essa consistência por conta própria.

Preservar a entrada, escolher o nome e testar

Manter o original: -k cria data.csv.bz2 e conserva data.csv. Isso permite comparar a recuperação com a entrada e manter uma cópia utilizável sem descompressão.

bzip2 -k data.csv

Escolher outro nome: -c escreve o fluxo comprimido na saída padrão, mantendo a entrada. O shell recebe esse fluxo pelo operador > e o grava em data-copy.csv.bz2.

bzip2 -c data.csv > data-copy.csv.bz2

O redirecionamento é feito pelo shell. Mesmo que bzip2 normalmente recuse uma saída existente quando ele próprio cria o arquivo, > pode esvaziar uma saída antes de bzip2 verificar a entrada. Use um nome novo, diferente da entrada, e confira o erro e o código de saída; uma entrada ausente ainda pode deixar um arquivo de saída vazio.

Conferir o fluxo comprimido: -t realiza uma descompressão de teste e descarta os dados produzidos, sem gravar um novo arquivo descomprimido no disco. A entrada comprimida é mantida.

bzip2 -t data.csv.bz2

Uma verificação bem-sucedida normalmente termina sem texto. Na implementação descrita pelo manual oficial, zero indica término normal, um indica problema de ambiente, como arquivo ausente ou erro de entrada e saída, dois indica dados comprimidos corrompidos e três indica erro interno de consistência do programa. Leia as mensagens e confira o código imediatamente após a operação; o sucesso de um comando posterior não substitui essa verificação.

Comparar a recuperação com o original

Em uma pasta de teste, confirme que note.txt e note.txt.bz2 ainda não existem. Prepare a entrada com printf 'hello\n' > note.txt: ela terá seis bytes, a palavra hello seguida de uma quebra de linha. Execute então:

bzip2 -c note.txt > note.txt.bz2
bzip2 -t note.txt.bz2
ls note.txt*

Os nomes esperados são os seguintes. A disposição em colunas é apenas ilustrativa; o terminal ou uma saída capturada pode mostrar um nome por linha.

note.txt  note.txt.bz2

O arquivo note.txt continua presente porque a compressão usou -c. A presença dos dois nomes não demonstra, sozinha, que a cópia está correta. Para recuperar sem substituir a entrada, escolha outro nome livre e execute bzip2 -dc note.txt.bz2 > restored-note.txt; depois compare restored-note.txt com note.txt usando, por exemplo, cmp note.txt restored-note.txt. Em arquivos iguais, cmp normalmente não imprime nada e retorna zero; uma diferença retorna um.

  1. Confirme a entrada e reserve nomes novos para a compressão e a recuperação de teste.
  2. Comprima com -k ou -c se precisar preservar a entrada e confira o término da operação.
  3. Execute bzip2 -t com o nome completo do arquivo comprimido e verifique seu diagnóstico e código de saída.
  4. Descomprima uma cópia em outro destino e compare o conteúdo recuperado com a referência. Mantenha também um backup independente para dados importantes.

O formato usa verificações de redundância cíclica de 32 bits, chamadas CRC, para detectar corrupção durante a descompressão. Isso não autentica quem forneceu os dados nem prova que eles correspondem à versão que você esperava. Quando a procedência importar, compare um resumo criptográfico ou uma assinatura com uma referência obtida por um meio confiável.

Opções e tamanho dos blocos

Opção Finalidade e condição
-k Mantém o arquivo de entrada durante a compressão ou descompressão.
-c Escreve na saída padrão e conserva a entrada. Confira separadamente o destino escolhido pelo shell.
-t Testa os dados comprimidos sem gravar a saída descomprimida no disco.
-1 ... -9 Seleciona blocos de 100.000 a 900.000 bytes durante a compressão; -9 é o padrão. O tamanho afeta a compressão e a memória necessária.
-v Mostra informações detalhadas do processamento, como a proporção de compressão.

Os números de -1 a -9 escolhem o tamanho dos blocos; não são uma promessa de uma proporção fixa nem devem ser interpretados como os mesmos controles de outro compressor. Blocos maiores podem melhorar a compressão, mas aumentam a necessidade de memória e têm ganhos que dependem dos dados. Na descompressão, o programa lê o tamanho no cabeçalho; essas opções numéricas não o alteram. Se precisar escolher um valor, compare o tamanho obtido e os recursos disponíveis com seus próprios arquivos, mantendo as demais condições iguais.

Sobrescrita, arquivos pequenos e limites

Ao usar a compressão padrão sem -k ou -c, a entrada é removida depois da compressão bem-sucedida. Bzip2 normalmente não sobrescreve um arquivo de saída existente, mas -f permite forçar essa substituição. Antes de usar força, confira o caminho, preserve o que já existe ou escolha outro nome; -k conserva a entrada, não uma saída antiga que você destruiu.

Um arquivo muito pequeno ou pouco compressível pode ficar maior depois da compressão. O custo da estrutura do formato não desaparece só porque o conteúdo é curto. A compressão também não é criptografia: um .bz2 não protege dados confidenciais contra quem consiga descomprimi-lo.

Combinar fluxos comprimidos não cria um pacote com índice de nomes e estrutura de pastas para restauração independente. Para uma árvore de diretórios, use tar e confira seus membros e o destino de extração. Preserve o arquivo comprimido original quando houver erro; detectar corrupção não significa reparar os dados nem garantir uma recuperação completa.

Na verificação de 29 de outubro de 2026 com bzip2 1.0.8, Bash 5.3.9 e tar 1.35 do Git for Windows, os exemplos de -k, -c e -t funcionaram com arquivos controlados. As duas saídas de data.csv recuperaram exatamente os bytes de entrada. O arquivo note.txt permaneceu com seis bytes e sua versão comprimida tinha 42 bytes; a recuperação para outro nome também foi idêntica. A listagem capturada mostrou os dois nomes em linhas separadas.

Em verificações adicionais, a compressão padrão removeu a entrada de teste, uma saída existente foi preservada quando houve recusa sem força e um CRC alterado fez -t retornar dois. Uma entrada ausente com redirecionamento deixou vazia uma saída descartável. As opções -1 e -9 produziram cabeçalhos com seus tamanhos de bloco e permitiram recuperar os mesmos dados. Esses testes usaram arquivos próprios no Windows; não mediram desempenho nem verificaram permissões nativas do Linux ou todos os metadados.

Pergunta frequente

Posso comprimir um diretório inteiro com bzip2 data/?

Bzip2 não transforma diretamente o diretório em um pacote único. Use, por exemplo, tar -cjf data.tar.bz2 data/: tar reúne a estrutura e chama bzip2 para comprimi-la. Confirme que data.tar.bz2 é um nome livre antes de criar; para conferir os membros, use tar -tjf data.tar.bz2. O guia do tar ligado na introdução explica os cuidados com criação e extração.

Documentação oficial

O manual oficial do bzip2 descreve as opções, os códigos de retorno, o tamanho dos blocos e as exigências de memória. Consulte também o manual da versão instalada para aplicar essas condições ao seu ambiente.