Sauver les données d’un disque dur hors service

../../../../2014/07/20/sauver-donnees-disque-dur-hs/
Antoine Van-Elstraete (antoine@van-elstraete.net)
dimanche 20 juillet 2014





3 min.

Image d'illustration

Extraire le disque

Afin de pouvoir travailler tranquillement sur une autre machine qui contient les outils logiciels adaptés, il vaut mieux démonter le disque dur dont les données sont illisibles et utiliser un adaptateur pour le brancher sur le port USB. De plus cela évite les erreurs dues au contrôleur (j’ai déjà eu le cas où le disque était en parfait état mais la carte fille SATA généraient de nombreuses erreurs).

De plus, si votre disque à pris l’eau, suivez ces excellents conseils du LABSud : http://www.labsud.org/recuperer-ses-donnees-apres-une-inondation/

Montage USB

Rien de bien compliqué si l’on dispose du matériel adéquat.

Copie du disque avec ddrescue

GNU ddrescue est un programme de récupération de données. Il va lire le support physique de différentes manières afin de récupérer un maximum de secteurs. Il faut lui indiquer le périphérique, l’image de sortie et le fichier de journal à utiliser. E.g. :

ddrescue /dev/sdb FULL_DISK.img sdb_recovery.log

Bien entendu, il faut autant de place disponible sur le poste de travail que la taille complète du disque dur.

Montage des partitions depuis l’image

Le noyau Linux permet d’utiliser un fichier comme un périphérique via le système loopback. Il faut informer le noyau de cette utilisation avec la commande partx, il crée ensuite un périphérique loopback :

partx -a -v FULL_DISK.img

Cette commande crée les périphérique /dev/loop0p1, /dev/loop0p2, etc. représentant le disque dur présent dans l’image créée précédemment.

Ensuite, il est possible de monter classiquement ces partitions (en lecture seule, c’est plus sûr) :

mount -o ro /dev/loop0p1 ./sdb_part1

Réparation de la partition NTFS

Parfois la partition est trop abîmée pour être montable. Selon les systèmes de fichiers, la réparation est plus ou moins simple. Pour cet article, j’ai eu à sauver un disque provenant d’un ordinateur sous Windows Vista, donc avec un système de fichiers NTFS.

ntfsclone

Afin d’extraire la partition à récupérer, j’ai utilisé ntfsclone avec les options permettant de lire la partition y compris si elle contient des erreurs :

ntfsclone -o sdb_part2.img --rescue --force /dev/loop0p2

Ici encore, le fichier de sortie fait la taille de la partition complète.

Copie des données vers un autre emplacement

Pour effectuer cette opération, c’est scrounge-ntfs qui est utilisé :

scrounge-ntfs -o RECUP /dev/loop1p2 3074048 156284928
  • RECUP est le dossier de sortie
  • /dev/loop1p2 est la partition NTFS à utiliser
  • 3074048 est le premier bloc à utiliser
  • 156284928 est le dernier bloc à utiliser
  • Les fichiers sont copié dans le dossier, sans arborescence.

Types de fichiers

Lors de la récupération, de nombreux de fichiers n’étaient pas associés au bon nom. J’ai donc utiliser une recherche par type mime. Par exemple pour les images au format JPEG :

find ./ -type f -exec file -i {} \; | grep "<code>image/jpeg</code>" | cut -d\: -f1 > mime-jpg.txt
rsync -v --files-from=./mime-jpg.txt ./ ./jpg/