Eu tenho um disco rígido com blocos defeituosos ou setores que não conseguem ler devido a possíveis problemas mecânicos, como uma cabeça defeituosa do disco, um motor defeituoso ou algum outro problema que está fazendo com que o disco rígido leia os dados de maneira dolorosa e lenta demais de erros de leitura. Estou vendo uma média de 50 KB / s, com algumas leituras caindo abaixo de 10 KB / s, e freqüentemente fica preso em um arquivo ou setor por completo, geralmente por um longo período de tempo - de 2 a 10 minutos ou mais (quando usando rsync, antes de atingir o tempo limite).
A velocidade parece variar bastante, e fica muito presa nos arquivos e, quando finalmente fica "solta", parece durar apenas uma pequena explosão antes de ficar presa novamente. A unidade também é muito silenciosa, com apenas um som ocasional de cópia de arquivos (geralmente quando fica presa / desconectada por um breve período, antes de ficar presa novamente). Portanto, não há nenhum desses sons malignos que normalmente estão associados à morte do disco rígido. Alguém sugeriu que os problemas pareciam ser causados por uma cabeça de disco desalinhada, o que requer muitas re-leituras antes de finalmente ler os dados com êxito. Parece plausível, mas eu discordo ...
De qualquer forma, o problema com o rsync é que ele parece não ter suporte decente ao tratamento de erros. Obviamente, não foi concebido para uso na recuperação de dados de queda de discos rígidos, mas todos os chamados utilitários "recuperação de dados" lá fora, que são destinados para tal uso geralmente se concentram em recuperação de arquivos apagados ou desarrumada partições, em vez de copiar arquivos de discos rígidos que estão morrendo. A recuperação de arquivos excluídos não é o que eu preciso, obviamente, então talvez você possa entender minha decepção por não conseguir encontrar o que estou procurando ainda.
Naturalmente, é aqui que você provavelmente diria "Você deve usar o ddrescue!" Bem, está tudo bem e elegante, mas eu já tenho a maioria dos dados em backup, então só quero recuperar certos arquivos. Não estou preocupado em tentar recuperar uma partição completa, bloco por bloco, como faz o ddrescue. Estou interessado apenas em resgatar apenas arquivos e diretórios específicos.
Idealmente, o que eu gostaria é de algum tipo de cruzamento entre rsync e ddrescue: algo que me permita especificar a origem e o destino como diretórios de arquivos normais como rsync (em vez de duas partições completas conforme o ddrescue exigir), com uma maneira de ignorar arquivos com erros em uma execução inicial e, em seguida, permite-me tentar recuperar esses arquivos com erros em uma execução posterior (com um comando ligeiramente alterado, é claro), talvez até oferecendo uma opção para especificar o número de tentativas de nova tentativa ... assim como como o ddrescue funciona com blocos, só quero um utilitário que funcione com arquivos / diretórios específicos, como o rsync.
Então, eu estou sonhando acordado aqui, ou existe algo lá fora que pode fazer isso? Ou talvez até uma maneira de fazer o rsync ou o ddrescue funcionar dessa maneira? Estou muito aberto a quaisquer soluções que funcionem, desde que me permitam escolher quais arquivos eu quero "resgatar", e pule arquivos com erros na execução inicial e tente / tente novamente esses erros mais tarde.
Até agora, tentei o rsync com as seguintes opções, mas geralmente fica preso em um arquivo por mais tempo que o tempo limite e, idealmente, gostaria que ele passasse para o próximo arquivo e voltasse mais tarde para os arquivos que obtém preso em. Eu não acho que isso seja possível. Enfim, aqui está o que eu tenho usado até agora:
rsync -avP --stats --block-size=512 --timeout=600 /path/to/source/* /path/to/destination/
fonte