Eu tenho um disco rígido com blocos defeituosos ou setores que não estão conseguindo ler devido a possíveis problemas mecânicos, como uma cabeça de disco defeituosa, motor defeituoso ou algum outro problema que esteja fazendo com que o disco rígido leia dados de maneira extremamente lenta e com muitos 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 bom tempo - de 2 a 10 minutos ou mais (quando usando rsync, antes que o tempo limite).
A velocidade parece variar muito, e fica muito presa nos arquivos, e quando finalmente fica "solta", parece durar apenas uma pequena rajada antes de ficar presa novamente. O drive também é muito silencioso, com apenas um som ocasional de arquivos copiando (geralmente quando fica preso / solto por um breve tempo, antes de ficar preso novamente). Assim, não há nenhum desses sons malignos que estão normalmente associados à morte do disco rígido. Alguém sugeriu que os problemas pareciam ser causados por um cabeçote de disco desalinhado, que requer muitas releituras antes de finalmente ler os dados com sucesso. Soa plausível, mas eu discordo ...
De qualquer forma, o problema com o rsync é que ele parece não ter suporte a manipulação de erro decente. Obviamente, não se destinava à recuperação de dados em discos rígidos, mas todos os chamados utilitários de "recuperação de dados", que são destinados a esse uso, geralmente se concentram na recuperação de arquivos excluídos. ou bagunçou 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 eu ainda estou procurando.
Naturalmente, é aqui que você provavelmente diria "Você deveria usar o ddrescue!" Bem, tudo bem e elegante, mas eu já tenho a maioria dos dados salvos em backup, então eu só quero recuperar alguns arquivos. Eu não estou preocupado em tentar recuperar uma partição completa bloco a bloco como o ddrescue faz. 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 permite especificar a origem e o destino como diretórios de arquivos normais como rsync (em vez de duas partições completas como ddrescue requer), com uma maneira de pular arquivos com erros em uma execução inicial, e então me permite 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 repetição ... assim como o ddrescue trabalha com blocos, apenas eu quero um utilitário que trabalhe com arquivos / diretórios específicos como o rsync faz.
Então, estou sonhando aqui ou existe algo que possa fazer isso? Ou talvez até mesmo uma maneira de fazer o rsync ou o ddrescue funcionarem de tal maneira? Estou realmente aberto a quaisquer soluções que possam funcionar, desde que elas permitam que eu escolha quais arquivos eu quero "resgatar", e posso pular arquivos com erros na execução inicial, e tentar / repetir esses erros novamente mais tarde.
Até agora eu tentei rsync com as seguintes opções, mas muitas vezes fica preso em um arquivo por mais tempo do que o tempo limite, e idealmente eu gostaria que ele passasse para o próximo arquivo e voltasse mais tarde para o arquivos fica preso. 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/