O arquivo começa em ASCII simples, portanto não é compactado.
$ hexdump -C db_stepup.sql.gz | less
00000000 2d 2d 20 70 68 70 4d 79 41 64 6d 69 6e 20 53 51 |-- phpMyAdmin SQ|
00000010 4c 20 44 75 6d 70 0a 2d 2d 20 76 65 72 73 69 6f |L Dump.-- versio|
00000020 6e 20 34 2e 31 2e 31 34 2e 38 0a 2d 2d 20 68 74 |n 4.1.14.8.-- ht|
[...]
Isso continua por um tempo até que, em algum lugar no meio, fica binário.
00012390 27 2c 20 27 6d 74 27 2c 20 27 42 6f 73 6e 69 61 |', 'mt', 'Bosnia|
000123a0 6e 27 29 1f 8b 08 00 00 00 00 00 00 03 7d 9d db |n')..........}..|
000123b0 93 14 d7 95 ee df cf 5f c1 db 78 22 3c 11 95 f7 |......._..x"<...|
Começa com 1f 8b 08
... (que por alguma razão não apareceu como tal na saída que você postou), poderia ser um cabeçalho gzip válido. O ponto de partida é 000123a3
, então vamos dividi-lo ...
$ dd if=db_stepup.sql.gz bs=$((0x000123a3)) skip=1 | gunzip | less
,
(356, 'bs', 'mo', 'Bosnian'),
(357, 'bs', 'mn', 'Bosnian'),
(358, 'bs', 'ne', 'Bosnian'),
[...]
E, ei, esses parecem ser os dados de onde parou. Por alguma estranha razão, o phpMyAdmin parece ter decidido usar o gzip no meio da saída ...
Reencontrando:
$ dd if=db_stepup.sql.gz bs=$((0x000123a3)) count=1 > db_stepup.stitch.sql
$ dd if=db_stepup.sql.gz bs=$((0x000123a3)) skip=1 | gunzip >> db_stepup.stitch.sql
Se você está procurando uma maneira de encontrar tais offsets automaticamente (talvez você tenha mais arquivos quebrados como esse), existe uma pequena ferramenta chamada binwalk
, que também pode procurar cabeçalhos de arquivos conhecidos no meio dos arquivos.
$ binwalk db_stepup.sql.gz
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
74659 0x123A3 gzip compressed data, from Unix, NULL date: Thu Jan 1 00:00:00 1970
92556 0x1698C gzip compressed data, from Unix, NULL date: Thu Jan 1 00:00:00 1970
110522 0x1AFBA gzip compressed data, from Unix, NULL date: Thu Jan 1 00:00:00 1970
[...]
Como você pode ver, ele tem o mesmo resultado ( 0x123A3
offset). Ele encontra mais de um porque o gzip vem em blocos / partes (você pode até mesmo concatenar múltiplos arquivos gzip) e cada bloco tem o mesmo cabeçalho distinto.