web-dev-qa-db-fra.com

Comment corriger une erreur d'entrée / sortie à l'aide de dd?

Bonjour, j'essaie de réparer mon système Windows 7 avec un disque dur cassé, mais il fonctionne toujours.

J'essaie de copier toutes les données sur un nouveau lecteur pour réinstaller Windows 7. Lecteur appelé SQSERVICE.

Je ne peux pas copier du tout - voir ci-dessous:

$ 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

Comment réparer cette "erreur d'entrée/sortie"?

10
Erazer

Vous l'avez dit vous-même: votre disque est cassé. Vous pouvez essayer ddrescue, il pourra peut-être contourner le chemin d'accès brisé. Attention cependant, vous perdrez des données.

La restauration à partir de la sauvegarde sera plus facile :)

L'utilisation correcte de ddrescue est la suivante:

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

ou si vous souhaitez diriger stdout vers l'outil de surveillance de progess:

Sudo ddrescue /dev/sdc1 /dev/sda1 | pv
13
Dennis Kaarsemaker

Je ne sais pas si cela est utile à qui que ce soit, mais si je trouvais cette page dans ma recherche, cela aiderait peut-être quelqu'un (autre que le PO qui, espérons-le, a résolu son problème il y a des mois).

ddrescue peut être le meilleur choix dans ce cas, pour la récupération de données (différente de la "correction" de l'erreur/du disque telle que la question initiale a été formulée), comme suggéré par Dennis.

Vous pouvez également monter le disque et copier les fichiers. C’est BEAUCOUP plus rapide s’il ya beaucoup d’espace vide ou si vous ne voulez que certains fichiers. AVERTISSEMENT: effectué à partir d'une machine Linux, il perd tous les attributs étendus, tels que les autorisations sur les fichiers. C'est donc un très mauvais choix pour les fichiers du système d'exploitation, mais tolérable pour les fichiers de l'utilisateur. Le faire à partir de Windows devrait les préserver, mais pourrait ne pas gérer les erreurs en douceur, le rendant éventuellement très lent.

Une autre option pour "réparer" les secteurs, et pas seulement pour les contourner, consiste à réaffecter les secteurs défectueux. Si vous connaissez le numéro de secteur (dans votre cas, 11233976 en supposant que votre taille de bloc est en dd et que la taille de secteur est de 512), exécutez-la simplement et exécutez-la à nouveau pour chaque nouveau secteur défectueux que vous trouvez:

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

AVERTISSEMENT: Ceci détruira les données sur ce secteur. Assurez-vous donc de bien savoir ce que vous faites. Si ce secteur ne peut pas être lu, son écrasement arrêtera les erreurs, mais cela signifiera que ce secteur contiendra des ordures pouvant corrompre un fichier important.

Voir cela pour plus d’informations: http://www.sjvs.nl/forcing-a-hard-disk-to-reallocate-bad-sectors/

Et si votre disque a un grand nombre (peut-être des milliers) de secteurs défectueux (soit considérés comme Current_Pending_Sector, Offline_Uncorrectable ou Reallocated_Sector_Ct), ou s'il est neuf et toujours sous garantie, ou si le nombre augmente constamment avec le temps, remplacez le disque quand même. Ne les laissez pas vous dire que la réaffectation corrige le disque. Il ne corrige que les secteurs défectueux connus et consomme les secteurs réservés à la réaffectation. Si le disque est enclin à développer plus de secteurs défectueux, le problème reviendra sans cesse, corrompant à chaque fois certaines données.

6
Peter