A recuperação de dados é uma coisa complicada e mais adequada para alguns livros do que uma resposta USE. Há muitos mitos, lendas e receitas de vodu por aí. :)
Se o disco parece estar falando no barramento, talvez você possa obter algum dos dados. Procure o GNU ddrescue . Ele faz o resgate em nível de bloco de um disco ou partições individuais. Há também "simples" ddrescue
, que é quase idêntico. Eu usei os dois.
Você precisará de ddrescue
, o disco que está morrendo e outro disco de tamanho igual ou maior. Se você quiser resgatar disco para disco, provavelmente o disco deve ser idêntico em tamanho. Caso contrário, você pode fazer uma cópia de disco para imagem e usar losetup
, dmsetup
e mount
(com a opção -o loop
) para obter acesso em nível de arquivo às partições.
ddrescue
funciona um pouco como dd
(daí o nome), mas é projetado para contornar seções ruins de um disco. Primeiro copia grandes pedaços, deixando buracos (arquivos esparsos, se você está salvando em um sistema de arquivos) onde estão os erros. Em seguida, ele divide e conquista, copiando áreas progressivamente menores das partes problemáticas do disco, até que apenas os setores defeituosos que falharam sejam deixados sem serem copiados. Ele também pode tentar novamente suas operações se o disco estiver se comportando erraticamente.
Além disso, você pode pará-lo e reiniciá-lo sempre que quiser, desde que você forneça um arquivo de log (que é legível para humanos e informa quais blocos de disco estão danificados). Aqui está uma chamada de amostra:
ddrescue /dev/sdg /mnt/sdg.img /mnt/sdg-ddrescue.log
Você pode interrompê-lo com Ctrl-C
e reiniciá-lo quando quiser. Verifique a manpage para opções adicionais se a operação de resgate não estiver indo bem.