Autor: Roberto Bechtlufft
Fonte:
http://linuxparaoresgate.com/artigos/recuperando_hds_cds_com_dd.php
Recuperando dados de HDs, CDs e DVDs defeituosos com o ddPor Roberto Bechtlufft, 03/04/2007O dd é um comando usado para clonar partições inteiras, bloco a bloco. Você pode usá-lo para clonar CDs e DVDs também. Mas o que acontece quando você tenta clonar partições ou CDs com defeito? A cópia é abortada.
Outro dia mesmo recebi de uma cliente um DVD no qual ela havia gravado uma festinha de sua filha de 5 anos. O DVD-RW em que a festa foi gravada estava danificado, e com isso o arquivo todo do filme estava inacessível. É um problema bastante irritante: você tem um filme de 400 MB, e por causa de 1 ou 2 MB com defeito a cópia do arquivo é abortada.
Foi então que descobri o dd_rescue. Ao contrário do dd, ele segue adiante, mesmo encontrando erros durante a cópia, e ainda tenta recuperar dados em setores defeituosos. Com isso, no caso do DVD, eu poderia recuperar boa parte do vídeo, embora perdendo alguns megas - o que, com certeza, seria bem melhor do que perder o arquivo inteiro. Ele funciona assim:
dd_rescue /dev/hdc ~/Desktop/dvd_da_festa.img
Onde /dev/hdc é o dispositivo do meu DVD player. O comando acima gera uma imagem do DVD-RW danificado, da melhor maneira possível, sem truncar o arquivo. Às vezes, quando o estrago é grande, não há muito o que fazer. Mas muitas vezes, com a imagem em mãos, é possível montá-la com o mount e extrair vários arquivos dela, desta maneira:
# mount -o loop ~/Desktop/dvd_da_festa.img /mnt/tmp
O único inconveniente é que, ao topar com badblocks, o dd_rescue se esforça ao máximo para recuperar os dados, e embora muitas vezes consiga, ele demora bastante para conseguir. Com isso, a recuperação do DVD levaria dias... Sem falar que se você estiver recuperando dados de um HD que já esteja nas últimas, o esforço para recuperar setores com badblocks pode acabar rendendo o último suspiro do HD. Não seria melhor checar primeiro os blocos não danificados, para garantir alguma coisa? Foi então que descobri algo ainda melhor: o dd_rhelp.
Funcionando como um complemento ao dd_rescue, o dd_rhelp "pula" os setores defeituosos, cuidando primeiro dos setores em perfeito estado. Com isso, se você tem um CD de 600 MB e apenas 10 MB estão danificados, o dd_rhelp vai recuperar 590 MB rapidamente, deixando os 10 MB críticos para o final. Se você vai executar a recuperação completa, saiba que ambos os programas levarão o mesmo tempo. Porém, talvez o dd_rhelp já tenha restaurado o suficiente, e você não sinta a necessidade de restaurar os últimos 10 MB. Se estivesse usando o dd_rescue, a recuperação dos 10 MB defeituosos, que poderiam estar logo no início do disco, poderia levar horas, sem que você tivesse a menor idéia do estado do resto do disco. Veja como é prático usar o dd_rhelp:
$ dd_rhelp /dev/hdc ~/Desktop/dvd_da_festa.img
Você pode interromper a operação com CTRL+C à vontade para continuar mais tarde. De tempos em tempos, o programa exibe ainda uma representação gráfica do progresso da recuperação, como esta:
=== dd_rhelp INFO - 226 chunks...
- Jump pos : 167826.0 - max file size : 1429088.0
- Biggest hole size : 10464 k - total holes : 1285625.5k
- xferd(succ/err) : 143462.5k(142568.0k/894.5k)
- EOF is found and is at 1429088.0k.
=== BAR === [ 'x' dd_rescued, '*' next jump point, '|' '.' not dd_rescued ]
|||x|...|.......||.......||.......|x|.......|......|x|....|xxx|......|xxx|......|xxx|......|........|....
.....|.......|.......|x|....|xxx|...*....|xx|...|xxxx|......|xxx|.......xx|.....|...|....|....|....|....|
...|....|....|...|....|....|...|....|....|...|....|...|....|....|...|....|....|...|....|.....|x|......|xx
x|...|....|xxx|....||...|....|...|....|......|xx|.......|.|xxx|..|..xxx|..||........|.......|....|...|...
..|....|...|....|....|...|....|...|....|....|...|....|....|...|....|...|....|....|...|....|....|...|....|
....|...|....|...|....|....|...|....|....|...|....|....|...|....|...|....|...|....|...|....|...|....|...|
....|...|....|...|...|....|...|....|...|....|...|....|...|....|...|....|...|...|....|...|....|...|....|..
.|....|...|....|...|....|...|...|....|...||...|...|....|...|....|...|....|...|....|...|....|...|...|....|
...|....|...|....|...|....|...|...|xxxx|....|...|x|......|...|....|...|....|...|....|...|....|...|....|..
.|...||...|...||...|...|....|...|....|...|....|...|....|...|....|...|...|....|...|....|...|....|........|
...|....|...|....|...|....|...|...|....|...|....|...|........||.......||.......|....|...|...|....|....|xx
xxxx|.....|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=== Bar was drawn from 0 to 1429088.0
Depois que o dd_rhelp acabar de trabalhar, ou se você decidir parar no meio e ver no que vai dar, você deve montar a imagem com o comando mount, como já ilustrei acima. Porém, antes de montar a imagem, cheque a consistência do sistema de arquivos para tentar corrigir eventuais falhas:
# fsck -y ~/Desktop/dvd_da_festa.img
Se estiver recuperando dados de um HD danificado, você pode copiar a imagem resultante para um HD novo sem maiores problemas, usando o dd:
dd if=~/Desktop/hd_danificado_do_cliente.img of=/dev/hdb1
Outro link interessante sobre recuperação de dados: http://www.guiadohardware.net/tutoriais/recuperacao-dados/O link acima é um tutorial de 8 páginas do Guia do Hardware sobre recuperação de dados. Inclusive há neste tutorial, escrito pelo Morimoto, as dicas que reproduzi neste tópico. Entre os dois, eu optei por uma versão mais resumida para postar aqui no fórum. No entanto, aqueles que quiserem se aprofundar no assunto o link do Guia do hardware e altamente recomendável.