Como faço para corrigir um erro de entrada / saída usando o dd?

13

Oi, estou tentando consertar meu sistema Windows 7 com um disco rígido quebrado, mas ele ainda está em execução.

Estou tentando copiar todos os dados para uma nova unidade para reinstalar o Windows 7. Unidade chamada SQSERVICE.

Não consigo copiar - veja abaixo:

$ sudo dd if=/dev/sdc1 of=/dev/sda1
dd: reading `/dev/sdc1': Input/output error
11233976+0 records in
11233976+0 records out
5751795712 bytes (5.8 GB) copied, 187.731 s, 30.6 MB/s

Como corrigir este "erro de entrada / saída"?

Erazer
fonte
1
@Gertvddijk obrigado por corrigir meu problema de ortografia, eu sou da Holanda e ainda estou aprendendo inglês.
Erazer

Respostas:

15

Você mesmo disse: seu disco está quebrado. Você pode tentar ddrescue, ele pode solucionar o caminho quebrado. Cuidado, porém, que você perderá dados.

Restaurar a partir do backup será mais fácil :)

O uso correto de ddrescueé o seguinte:

sudo apt-get install gddrescue
sudo ddrescue /dev/sdc1 /dev/sda1

ou se você deseja canalizar stdoutpara a ferramenta de monitoramento de progresso:

sudo ddrescue /dev/sdc1 /dev/sda1 | pv
Dennis Kaarsemaker
fonte
Sim, eu disse isso, mas a restauração do backup está nessa unidade ... e esta unidade tem apenas um problema de setor, bem, como posso usar esse comando? im apenas novato usuário linux ..
Erazer 09/02
2
Portanto, seu backup está na mesma unidade que você está usando? Boggles
Dennis Kaarsemaker
1
bem mesma unidade sim, mas não na mesma partição. bem, eu sou um pouco estúpido: '(o backup não é importante de todo
Erazer 09/02
6

Não sei se isso é útil para alguém, mas se eu encontrei essa página na minha pesquisa, talvez ajude alguém (exceto o OP que, esperançosamente, resolveu seu problema meses atrás).

O ddrescue pode ser a melhor opção nesse caso, para recuperação de dados (diferente de "corrigir" o erro / disco conforme a pergunta original foi redigida), como sugeriu Dennis.

Como alternativa, você também pode montar o disco e copiar os arquivos. Isso é MUITO mais rápido se houver muito espaço vazio ou se você quiser apenas alguns arquivos específicos. AVISO: feito em uma máquina Linux, isso perde todos os atributos estendidos, como permissões de arquivo, por isso é uma péssima escolha para arquivos de SO, mas tolerável para arquivos de usuário. Fazer isso a partir do Windows deve preservá-los, mas pode não lidar com os erros sem problemas, possivelmente tornando-o muito lento.

Outra opção para realmente "consertar" os setores, e não apenas ignorá-los, é realocar os setores defeituosos. Se você souber o número do setor (no seu caso, 11233976, assumindo o tamanho do bloco em dd e o tamanho do setor são 512), basta executar isso e executar novamente para cada novo setor incorreto que encontrar:

hdparm –write-sector 11233976 –yes-i-know-what-i-am-doing /dev/sdb

AVISO: Isso destruirá os dados desse setor. Portanto, verifique se realmente sabe o que está fazendo. Se esse setor não puder ser lido, substituí-lo interromperá os erros, mas isso significa que o setor conterá lixo, possivelmente corrompendo um arquivo importante.

Consulte isso para obter mais informações: http://www.sjvs.nl/forcing-a-hard-disk-to-reallocate-bad-sectors/

E se o seu disco tiver um grande número (talvez milhares) de setores defeituosos (vistos como Current_Pending_Sector, Offline_Uncorrectable ou Reallocated_Sector_Ct), ou se for novo e ainda estiver na garantia, ou se o número aumentar constantemente ao longo do tempo, substitua o disco de qualquer maneira. Não deixe que eles digam que a realocação corrige o disco. Ele apenas corrige os setores defeituosos conhecidos e consome os setores reservados para realocação. Se o disco estiver propenso a desenvolver mais setores defeituosos, o problema continuará voltando, sempre que corrompendo alguns dados.

Pedro
fonte
0

Enquanto algumas partes do disco estão quebradas, você ainda pode copiar boas partes do disco.

$ dd --help
...
 noerror   continue after read errors
...
sudo dd if=/dev/sdc1 of=/dev/sda1 conv=noerror
Max A.
fonte