Como Recuperar Arquivos bzip2 Corrompidos no Ubuntu

Visão Geral

Falhas em mídias de armazenamento e interrupções em transferências de rede podem corromper arquivos compactados. Felizmente, a arquitetura do formato bzip2 processa dados em blocos isolados, permitindo resgatar partes íntegras de um contêiner danificado por meio do utilitário bzip2recover. Neste laboratório prático, analisaremos como identificar inconsistências de CRC, segmentar blocos válidos e restaurar o conteúdo recuperável em sistemas Ubuntu.

1. Configuração do Laboratório e Criação de Arquivo Multibloco

Iniciamos atualizando a base de pacotes do sistema operacional e garantindo que o conjunto de ferramentas do bzip2 esteja devidamente instalado.

Atualização dos repositórios e instalação do utilitário bzip2

Para manter o ambiente de testes isolado e organizado, criamos um diretório de trabalho dedicado e acessamos essa pasta.

Criação do diretório de testes bzip2_demo

Geramos uma carga de dados aleatórios em formato texto com tamanho exato de 2 MB para servir de amostra no arquivo sample_data.txt.

Geração de arquivo de teste de 2MB via base64

O compressor bzip2 divide fluxos de dados em blocos independentes antes de aplicar o algoritmo Burrows-Wheeler. Forçamos a menor dimensão de bloco disponível (100 KB) para garantir a geração de múltiplos blocos e preservamos o arquivo original.

⚙️ [Parâmetros Principais]

-k : Preserva o arquivo de origem intacto após a operação de compressão ou descompressão.
-1 ~ -9 : Define o tamanho dos blocos de compressão, variando entre 100 KB e 900 KB.
-d : Executa a extração/descompactação do fluxo bzip2.
-t : Avalia a integridade do arquivo compactado sem gravar dados em disco.
-v : Habilita a exibição detalhada de taxas de compressão e status de execução.
-f : Sobrescreve arquivos de saída pré-existentes de forma forçada.

Compressão de arquivo com blocos reduzidos de 100KB

Verificamos os arquivos gerados e suas respectivas dimensões no disco em formato legível.

Listagem dos arquivos de texto e compactado bzip2

2. Injeção de Falhas e Validação de Quebra de Integridade

Retornamos ao diretório de trabalho ~/bzip2_demo para prosseguir com o experimento.

Acesso ao diretório de trabalho

Criamos uma cópia de trabalho nomeada corrupted_data.bz2 para mantermos o arquivo comprimido original preservado.

Cópia de segurança do arquivo compactado

Simulamos uma corrupção real de dados sobrescrevendo 64 bytes aleatórios em um deslocamento específico da estrutura interna do arquivo por meio do comando dd.

Gravação de bytes aleatórios no arquivo compactado via dd

Submetemos o contêiner corrompido ao teste de integridade do bzip2 em nível verboso para expor a falha de verificação cíclica de redundância (CRC).

Falha de integridade e erro de CRC detectados

3. Extração e Separação de Blocos com bzip2recover

Posicionamo-nos novamente na pasta de trabalho onde se encontram os arquivos do laboratório.

Navegação até o diretório do laboratório

O comando bzip2recover analisa a sequência binária à procura de cabeçalhos de bloco intactos, particionando o arquivo danificado em fragmentos independentes com o prefixo rec*.

Execução da ferramenta de recuperação de blocos bzip2recover

Listamos os novos arquivos gerados pelo processo de varredura para conferir os segmentos destacados.

Exibição dos blocos extraídos pelo utilitário de recuperação

4. Teste de Blocos Recuperados e Recomposição dos Dados

Acessamos a pasta ~/bzip2_demo para iniciar a validação individual e a reconstrução dos dados legíveis.

Retorno ao diretório de execução

Executamos uma checagem em lote sobre cada fração extraída utilizando bzip2 -t, filtrando os blocos que mantiveram a consistência de seus dados internos.

Validação da integridade de cada bloco isolado

Descompactamos sequencialmente cada bloco operacional com bzip2 -dc, redirecionando a saída padrão para consolidar as informações válidas no arquivo unificado recovered_data.txt.

Concatenação e extração dos blocos válidos para novo arquivo

Comparamos as dimensões entre o arquivo de origem sample_data.txt e o arquivo reconstituído recovered_data.txt para quantificar a taxa de dados resgatados.

Comparativo de tamanho entre arquivo original e restaurado

A técnica de recuperação por segmentação demonstra que danos estruturais em arquivos bzip2 não representam necessariamente a perda irrecuperável de todo o conteúdo. Ao empregar o bzip2recover em conjunto com scripts simples no terminal do Ubuntu, administradores de sistemas conseguem mitigar incidentes de corrupção e reaproveitar frações valiosas de informações armazenadas.