Primeiro, para o software usar: você pode tentar usar em ddrescue
vez de dd
.
ddrescue
tem uma opção para fazer apenas um número limitado de novas tentativas. Ele também pode usar um arquivo de log, registrando quais blocos estavam com defeito. Se você quiser fazer mais tentativas mais tarde, poderá usar o mesmo arquivo de log para executar ddrescue
novamente com opções diferentes (como mais tentativas) e ele tentará apenas os blocos necessários.
Exemplo de uso:
# ddrescue -n /dev/sda /dev/sdb rescue.log
# ddrescue -r1 /dev/sda /dev/sdb rescue.log
Na ddrescue
página de informações:
-n, --no-scrape
Skip the scraping phase. Avoids spending a lot of time
trying to rescue the most difficult parts of the file.
-r, --retry-passes=<n>
Exit after given number of retry passes. Defaults to 0.
-1 means infinity. Every bad sector is tried only once
in each pass. To retry bad sectors detected on a previous
run, you must specify a non-zero number of retry passes.
Aqui estão algumas fontes adicionais para usar ddrescue
:
Editar
No caso do HDD em si está levando muito tempo, você pode tentar ativar um recurso chamado TLER ( T ime L imited E rror R ECUPERAÇÃO) ou CCTL ( C ommand C EALIZAÇÃO T ime L IMIT). Nem todos os HDDs possuem, mas você pode usá-lo para limitar o tempo no próprio controlador de HDD. Essa abordagem pode ser combinada com o uso ddrecue
, é claro.
O Linux possui uma ferramenta chamada smartctl
(no smartmontools
pacote).
Para verificar a configuração atual ("desativado" significa um tempo ilimitado, que você não deseja):
# smartctl -l scterc /dev/sda
Para configurá-lo para um valor fixo (5,0 segundos neste exemplo. A configuração para 0 desativa o TLER):
# smartctl -l scterc,50,50 /dev/sda
Fonte para TLER: http://en.wikipedia.org/wiki/TLER
Eu obtive bons resultados de discos ilegíveis com este software.
http://www.cgsecurity.org/wiki/TestDisk
Este próximo também é uma ferramenta de recuperação sólida. Pode obter arquivos mesmo que sua tabela de arquivos esteja quebrada ou se eles foram excluídos. É uma ferramenta forense muito boa. Ele despeja as coisas de uma maneira realmente desorganizada, mas você pode mover todos os dados.
http://www.cgsecurity.org/wiki/PhotoRec
fonte
Para uma opção rápida e rápida para resgatar o disco, você pode usar um arquivo de script sh e executá-lo com sh. Ele contém esta linha, basta repetir
sudo ddrescue
esleep 3
mais algumas vezes. O sono é usado para fazer a unidade descansar alguns segundos:As opções usadas acima:
-r0
: sem novas tentativas-e +0
: sair no primeiro erro-T 1s
: sair com 1 segundo de falha na leitura-d
: E / S direta-n
: sem rasparVocê pode usar
-R
depois de concluir com a opção-A
uma vez, que reverterá e removerá todo o tamanho do erro e começará novamente para trás. Significa que ele lerá os erros de maneira diferente.fonte
Depende do tamanho do seu disco rígido e de quantos blocos defeituosos ele possui. Geralmente, leva 20 minutos para fazer backup usando DD um hd tera de 1 tera. Com blocos ruins que acabei de me recuperar esta manhã, levei o dobro do tempo. Eu estava tendo problemas para duplicar (fazer backup de um disco) com cerca de 30 blocos defeituosos. A primeira coisa que fiz foi fazer backup de arquivos usando o Filezilla comum para fazer backup de todos os bons dados. Percebo que um arquivo grande não estava sendo copiado corretamente (parando no meio e reiniciando a transferência). Felizmente, tenho um backup anterior do mesmo arquivo. Para duplicar o disco, tive que encontrar os blocos defeituosos no disco usando este procedimento:
Primeiro, descubra o disco com problema, identificando as informações do HD usando o fdisk -l
Segundo, se digamos que seu disco é / dev / sdb, então você precisa executar o comando badblocks -v / dev / sdb , que listará todos os blocos defeituosos na unidade. Felizmente, haverá alguns. Se nenhum bloco defeituoso for encontrado, os blocos do seu drive estarão OK e você precisará descobrir outra coisa. Meu tamanho de bloco é 512, então eu uso esse número padrão para executar o DD
3º cada bloco é do tamanho 512, então o que eu fiz foi definir bs = 512
Cada vez que executava o DD regularmente, como sempre faço, meus dados, após os erros, ficam corrompidos. Então, eu uso os parâmetros, conforme explicado na página https://www.gnu.org/software/coreutils/manual/html_node/dd-invocation.html, procure a parte "Por falhas nos discos".
Demorou um pouco. Cada bloco defeituoso encontrado soa como uma batida na unidade defeituosa. Ele copia bloco por bloco, e através de todos os meus blocos ruins fez o mesmo barulho. A quantidade de vezes que um ruído foi causado foi porque ele encontrou outro bloco defeituoso e informa sobre a mensagem de erro no visor. O que o 'conv = noerror, sync' faz, é eliminar leituras ruins com NULs, enquanto 'iflag = fullblock' atende a leituras curtas, mas mantém os dados sincronizados até o fim. Sem corrupção, simplesmente não copia os blocos defeituosos e os preenche com NULs vazios.
Depois que a cópia com DD foi feita, substituí o arquivo inválido, revertendo o Filezilla de um backup passado e tudo funcionou bem. Espero que isso seja útil para outras pessoas que tentam fazer backup de unidades com defeito.
NOTA: Meus blocos defeituosos estavam praticamente próximos um do outro. Cerca de 4 blocos de cada vez juntos em grupos onde foram detectados problemas. Se seus blocos estiverem em todo o disco, vários arquivos poderão ser afetados. Felizmente, no meu caso, um grande arquivo de banco de dados de 4 GB foi afetado apenas.
fonte