tar sai com bzip2: (stdin): arrastando lixo após EOF ignorado após extrato

3

Eu extraí um arquivo tar.bz2 grande (3,9 GB) usando o seguinte comando:

tar -xjvf archive.tar.bz2

O extrato procede a multas, mas sai da impressão:

bzip2: (stdin): trailing garbage after EOF ignored

Existe algum problema com o arquivo / extrato? A integridade dos meus dados foi comprometida?

    
por avanwyk 30.09.2014 / 21:33

2 respostas

0

arrastando lixo significa que há dados irrelevantes no final do arquivo que não fazem parte do formato bz2 ; então bz2 não pode fazer nenhum sentido dos dados adicionais (daí o lixo).

Se você quiser provocar o erro:

$ echo Hello World | bzip2 > helloworld.bz2
$ echo Something not bzip2... >> helloworld.bz2
$ bunzip2 < helloworld.bz2
Hello World

bunzip2: (stdin): trailing garbage after EOF ignored

O primeiro comando cria um arquivo bzip2 válido que contém a mensagem Hello World .

O segundo comando acrescenta Something not bzip2... ao arquivo bzip2. Isso está perdendo lixo porque não é compactado com bzip2.

A execução disso por meio do bunzip2 produz os dados válidos, mas imprime um aviso sobre os dados irrelevantes e ignorados.

No final, os dados que foram originalmente compactados ainda estão intactos, mas algo estranho aconteceu no final do arquivo. Pode valer a pena olhar para ele em um editor hexadecimal; às vezes você pode dizer o que aconteceu, às vezes você não pode.

$ hexdump -C helloworld.bz2 
00000000  42 5a 68 39 31 41 59 26  53 59 d8 72 01 2f 00 00  |BZh91AY&SY.r./..|
00000010  01 57 80 00 10 40 00 00  40 00 80 06 04 90 00 20  |.W...@..@...... |
00000020  00 22 06 86 d4 20 c9 88  c7 69 e8 28 1f 8b b9 22  |."... ...i.(..."|
00000030  9c 28 48 6c 39 00 97 80  53 6f 6d 65 74 68 69 6e  |.(Hl9...Somethin|
00000040  67 20 6e 6f 74 20 62 7a  69 70 32 2e 2e 2e 0a     |g not bzip2....|

Este exemplo é óbvio, já que você normalmente não vê texto simples como este em dados compactados do bzip2.

A grande questão é se o lixo foi anexado (como no exemplo acima, deixando os dados originais intactos), ou se algum tipo de corrupção aconteceu. É impossível dizer a partir da mensagem de erro (o próprio bzip2 não sabe realmente); no entanto, se fosse uma corrupção aleatória, você normalmente veria algumas mensagens de erro tar também.

    
por 01.10.2014 / 02:58
0

Se você souber as opções de compactação exatas do arquivo (provavelmente apenas os padrões), poderá obter os dados finais reais:

Para obter o tamanho do arquivo tar compactado real, recompressá-lo.

Usando o tamanho do arquivo que você obtém - que deve ser menor que o tamanho do arquivo original (talvez apenas um byte), obtenha a parte depois dos dados reais:

tail -c +12345 witTrailingData.tar.bz2

(Isso pode ser difícil com o arquivo grande)

    
por 01.10.2014 / 03:40

Tags