Você tem uma unidade fisicamente danificada. Pelo que você descreve, ddrescue
pode nem conseguir obter os dados. Aqui está o porquê;
ddrescue
funciona simplesmente ignorando os erros de leitura quando os encontra em vez de lançar algum erro de E / S suave. O fluxo de saída é preenchido com zeros para considerar o intervalo e apenas continua como se o erro nunca tivesse ocorrido. No seu caso, no entanto, o que estiver errado com a unidade pode ser tão grave que o firmware da unidade está sendo reinicializado. Isso explicaria o diferente nó / dev / sd *. Note também que pode não ser um dano físico. Talvez o firmware esteja defeituoso ou as estruturas de dados de baixo nível no disco estejam corrompidas (a falta de efeitos sonoros da unidade confere credibilidade a essa teoria).
De qualquer forma, se o firmware está sendo redefinido em você, então não é um erro de E / S. É como puxar o cabo de alimentação da unidade e conectá-lo novamente. ddrescue
simplesmente não consegue lidar com esse cenário. A única maneira de obter os dados de volta seria criar uma lista de blocos específicos que estão causando a falha do firmware (por tentativa e erro) e usar essa lista como entrada para um script que pode usar dd
para ignore esses setores (observe que ddrescue
é pouco mais que um script dd
).
Pessoalmente, nunca tentaria esse tipo de recuperação, a menos que os dados fossem ridiculamente importantes e / ou valiosos. É uma dor séria. Note que trocar cabeças também é uma dor, mas traz um risco adicional de provavelmente destruir a unidade ainda mais, já que abrir a unidade corretamente requer luvas, uma rede de cabelo, ambiente de pressão positiva e ferramentas especiais.