web-dev-qa-db-fra.com

Récupérer des fichiers à partir d'un lecteur NTFS avec des secteurs défectueux

Il y a quelques jours, j'ai créé une sauvegarde de mes données sur un disque dur externe USB NTFS de 500 Go. J'ai ensuite formaté mon ordinateur, réinstallé Ubuntu et commencé à transférer les données du disque dur externe.

Malheureusement, certains fichiers ont été corrompus et Ubuntu est incapable de les copier. Le même problème se produit si je me connecte sous Windows 7.

Utilitaire de disque détecte avec SMART qu'il existe "quelques secteurs défectueux".

Certains fichiers sont parfaitement intacts, mais d’autres fichiers ne sont pas accessibles (ni lus, copiés, etc.) bien qu’ils soient affichés dans Nautilus et affichent la taille de fichier correcte.

Puis-je faire quelque chose pour récupérer ces données? J'ai pensé à utiliser TestDisk mais cet utilitaire semble plus utile pour réparer des partitions perdues ou des fichiers supprimés.

J'ai aussi pensé à utiliser ddrescue afin de pouvoir au moins avoir une copie de bas niveau du disque, mais je ne suis pas sûr de l’utilisation qui en est faite pour récupérer les données !!!

4
Martin

Problème résolu! Je sais que cela n’est pas lié à Ubuntu, mais je pense que cela pourrait être utile à d’autres personnes.

J'ai découvert que chkdsk de Window pourrait résoudre le problème, car Ubuntu ne prend pas en charge NTFS aussi bien que Windows. Plusieurs heures/jours ont été nécessaires pour exécuter les tâches (uniquement Windows scandisk avec toutes les options activées), mais j'ai finalement réussi à récupérer 99,98% des données.

3
Martin

Au lieu d'utiliser dd, vous devriez utiliser un outil qui gère mieux les erreurs au lieu de les remplir avec des zéros. J'ai rencontré de nombreux délais d'attente, ce qui rend le processus très long et fastidieux. L'alternative est ddrescue qui tente de nouveau les secteurs en échec et qui est également un peu plus rapide pour ignorer les secteurs défectueux de mon expérience.

Installer (Ubuntu)

Sudo apt-get install gddrescue

Créer l'image

 Sudo ddrescue -d -r3 /dev/sda1 test.img test.logfile

Cela créera une image dans le répertoire en cours nommé test.img du disque /dev/sda1. Vous pouvez bien sûr sauvegarder l'intégralité du lecteur au lieu d'une seule partition. (Le paramètre r lui dit d'essayer à nouveau trois fois les secteurs en échec - n'oubliez pas le fichier journal, sinon cela ne fonctionnera pas) ddrescue vous permet également d'annuler/de reprendre le processus, ce qui est vraiment agréable. N'oubliez pas de définir à droite blocksize: -b "blocksize" si vous obtenez des erreurs sur -d "mode direct"

Monter le fichier image

Créez un dossier dans lequel vous voulez monter l'image et montez l'image

Sudo mkdir /mnt/mybackup
mount test.img /mnt/mybackup -o loop

Consultez les informations suivantes pour plus d'informations: https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.htmlhttps://www.technibble.com/guide-using-ddrescue-recover-data/https: //Apple.stackexchange. com/questions/39504/best-way-to-copier-tous-les-fichiers-ignorants-les-erreurs

3
user359072

Si un lecteur a des secteurs illisibles, l’un des choix que vous avez est d’en faire une image avec dd, le forçant à ignorer les secteurs endommagés, puis à monter cette image pour lire les données utiles.

Créer une image du lecteur

Utilisez la commande Sudo fdisk -l pour identifier votre disque USB, notez le chemin de son périphérique. Il devrait ressembler à /dev/sd[*], où [*] est une lettre représentant votre clé USB.

Lorsque vous êtes sûr du chemin du lecteur que vous souhaitez copier, vous pouvez utiliser dd pour en créer une image et utiliser les options pour continuer à lire après l'échec de la lecture des données.

dd if=/dev/hd[*] of=/foo_path/foo_image conv=noerror,sync

Cela lit le périphérique /dev/sd[*], le renvoie à /foo_path/foo_image et ignore les erreurs de lecture. /foo_path/foo_image ne devrait pas être sur le même disque que celui que vous lisez.

Donc, disons que vous avez utilisé Sudo fdisk -l et que vous avez trouvé que votre clé USB est /dev/sdb, vous pouvez ensuite utiliser l'une de ces commandes pour créer une image en remplaçant simplement /dev/hd[*] par /dev/sdb.

Mouting du fichier image pour lire les données

Vous devez créer un point de montage, appelons-le /mnt/ddimage

Sudo mkdir /mnt/ddimage

Montez maintenant l'image que vous venez de créer

mount /foo_path/foo_image /mnt/ddimage -o loop

Vous devriez maintenant pouvoir lire toutes les données utiles de l’image de lecteur clonée.

2
Bruno Pereira