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".
dd if=/dev/sdb of=/dev/sda bs=512 conv=noerror,sync iflag=fullblock
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.