Como corrijo um erro de entrada / saída usando dd?

9

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. Drive chamado SQSERVICE.

Eu não consigo copiar nada - 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 isso "Erro de entrada / saída"?

    
por Erazer 09.02.2013 / 14:24

2 respostas

12

Você mesmo disse: seu disco está quebrado. Você pode tentar ddrescue , pode ser capaz de contornar o caminho quebrado. Cuidado, porém, 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ê quiser canalizar stdout para a ferramenta de monitoramento de progresso:

sudo ddrescue /dev/sdc1 /dev/sda1 | pv
    
por Dennis Kaarsemaker 09.02.2013 / 14:26
6

Não sei se isso é útil para qualquer pessoa, mas se eu encontrar essa página na minha pesquisa, talvez ajude alguém (que não seja o OP que resolveu o problema dele meses atrás).

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

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. ATENÇÃO: feito a partir de uma máquina Linux, isso perde todos os atributos estendidos, como permissões de arquivo, portanto, é uma escolha muito ruim para os arquivos do SO, mas tolerável para arquivos do usuário. Fazê-lo a partir do Windows deve preservá-los, mas pode não lidar com erros sem problemas, possivelmente tornando-se muito lento.

Outra opção para realmente "consertar" os setores, e não apenas contorná-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 é 512), apenas execute isso e execute novamente para cada novo setor defeituoso que você encontrar:

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

AVISO: Isso destruirá os dados desse setor. Então tenha certeza que você realmente sabe o que está fazendo. Se este setor não puder ser lido, sobrescrevê-lo interromperá os erros, mas isso significará que o setor conterá lixo, possivelmente corrompendo um arquivo importante.

Veja isso para obter mais informações: link

E se o seu disco tiver um grande número (talvez milhares) de setores defeituosos (seja visto 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 consistentemente ao longo do tempo, deve substituir o disco de qualquer maneira. Não deixe que eles digam que realocar conserta o disco. Ele só 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 corrompendo alguns dados.

    
por Peter 21.05.2013 / 14:59