Recuperando dados de HDs, CDs e DVDs defeituosos com o aplicativo "dd"

Iniciado por gabriel0085, 23 de Novembro de 2007, 12:30

tópico anterior - próximo tópico

gabriel0085

Autor: Roberto Bechtlufft

Fonte: http://linuxparaoresgate.com/artigos/recuperando_hds_cds_com_dd.php





Recuperando dados de HDs, CDs e DVDs defeituosos com o dd
Por Roberto Bechtlufft, 03/04/2007


O 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. 



clcampos

Excelente o texto Gabriel!

Tem como você agora escrever sobre um bom gerenciador de Favoritos? Afinal você é um dos grandes culpados por ele estar tão lotado assim....

[]'s

Cristiano
Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!

teles

Caro Gabriel.
Consegui recuperar dados de um dvd com o comando '# dd_rhelp /dev/hdd /home/minhapasta/nomedoarquivo.img', porém ao comandar '# mount -o loop /home/minhapasta/nomedoarquivo.img /mnt/tmp' aparece a mensagem: 'mount: o ponto de montagem /mnt/tmp não existe'.
Como resolver esse problema?
Mais uma coisa: os arquivos existentes no dvd são do tipo '.vob' e gostaria de poder gravar novo dvd com o resultado da recuperação desses dados. Isso é possível? Como fazê-lo?
teles

Darcamo

Citar...aparece a mensagem: 'mount: o ponto de montagem /mnt/tmp não existe'

Se a pasta /mnt/tmp não existe (por padrão ela não existe), basta especificar outra (vazia) ou então criar a mnt com o comando
mkdir /mnt/tmp


No mais, excelente dica Gabriel.

brunei

Olá gabriel, excelente dica. Mas uma dúvida, se você usar o dd com conv=noerror não tem o mesmo efeito? Digo, ignora erros de leitura e prossegue com a copia? Eu não tenho como testa-lo aqui.
Bruno Ribeiro

teles

Olá pessoal.
Obrigado pelas dicas.
Criei a pasta 'tmp' em '/mnt/' e comandei novamente '# mount -o loop /home/minhapasta/nomedoarquivo.img /mnt/tmp' e realmente foram criados todos os arquivos '.vob' de meu dvd original.
Porém ao regravar o dvd aparecem ainda diversos quadradinhos e solavancos ao rodar o dvd.
Já mandei minha máquina para a assistência técnica para saber se era o meu gravador que estava com problemas, mas o teste deu negativo.
Fico sem saber porque não consigo gravar um dvd totalmente sem defeitos.
Teles

wildner

Gabriel,

Apaguei meu HD de 250gb. Emprestei outro igual 250gb.

Veja o que fiz:

1. Formatei o HD emprestado de 250gb como Reiserf
2. Montei o emprestado
3.  sudo dd if=/dev/sda of=/media/sdb/sda.img

Onde Sda é o Hd apagado e Sdb é para onde fiz a cópia.

Blz o dd fez a imagem Sda.img, mas e agora o que faço, tentei o comando abaixo:
sudo mount -o loop /media/disk/sda.img /media/tmp
Mas apreceu a mensagem " Voce precisa especificar o tipo do sistema de arquivos"

O Hd baleado é ext3 e o que copiei é Reiserfs, tem algum problema?

Vc poderia me ajudar, não estou conseguindo montar a dita imagem.

Abs

Wildner


vampire_thunder

Como instala esse dd_rhelp? Não achei nos repositórios, só o ddrescue.

teles


samuelbh

Citação de: wildner online 22 de Janeiro de 2008, 01:37
Gabriel,

Apaguei meu HD de 250gb. Emprestei outro igual 250gb.

Veja o que fiz:

1. Formatei o HD emprestado de 250gb como Reiserf
2. Montei o emprestado
3.  sudo dd if=/dev/sda of=/media/sdb/sda.img

Onde Sda é o Hd apagado e Sdb é para onde fiz a cópia.

Blz o dd fez a imagem Sda.img, mas e agora o que faço, tentei o comando abaixo:
sudo mount -o loop /media/disk/sda.img /media/tmp
Mas apreceu a mensagem " Voce precisa especificar o tipo do sistema de arquivos"

O Hd baleado é ext3 e o que copiei é Reiserfs, tem algum problema?

Vc poderia me ajudar, não estou conseguindo montar a dita imagem.

Abs

Wildner



O correto seria usar  comando assim:

sudo mount -o loop -t ext3 /media/disk/sda.img /media/tmp
Assinatura removida pela Equipe do Fórum