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.