lundi 13 juin 2016

Récupérer les données d’un disque dur défectueux avec SystemRescue

Linux possède de nombreux utilitaires pour restaurer des disques durs ou pour récupérer des données. L’un des meilleurs est SystemRescue qui est fourni avec la distribution Linux Gentoo. Cependant, le problème des distributions Linux amorçables est qu’elles sont très lentes sans compter qu’on n’a pas toujours accès au lecteur CD/DVD. C’est pourquoi, SystemRescue est également disponible dans une version autonome qu’on installera sur une clé USB. Il suffit ensuite de configurer le BIOS pour que cette clé USB démarre en premier et SystemRescue vous proposera de nombreuses options pour récupérer vos données. L’un des avantages de SystemRescue est qu’il n’est pas dépendant d’un système de fichier et donc, vous pouvez récupérer vos données sur un disque sous Windows, Linux, Mac ou Unix.

Créer une clé USB amorçable de SystemRescue

On a mentionné que vous devrez configurer le BIOS pour démarrer la clé USB en premier, mais ce n’est pas nécessaire sur certaines machines. En effet, ces dernières possèdent un menu qu’on peut accéder en tapant la touche F au démarrage qui vous permettra de choisir entre différents médias de démarrage. Notez que la clé USB doit être branchée avant de démarrer la machine pour que le BIOS puisse la détecter.
En premier lieu, téléchargez l’image ISO de SystemRescue. Ensuite, créez un répertoire temporaire et montez l’image sur la clé USB avec la commande suivante :

mkdir temp/
sudo mount -o loop,exec systemrescuecd-x86-2.3.1.iso temp/

Cette image contient un script qui automatisera la plupart des tâches et c’est pourquoi, on doit utiliser l’option exec dans notre commande. Ensuite, lancez le scriptusb_inst.sh qui se trouve sur la clé USB (cette dernière ne doit pas être montée).

sudo bash ./usb_inst.sh

Vous pouvez taper cette commande à partir d’un terminal X ou d’une console et hop ! Le logiciel SystemRescue sera opérationel. Par défaut, SystemRescuedémarre en mode console, mais vous pouvez utiliser l’environnement XFCE en tapant wizard à l’invite. Vous aurez automatiquement les privilèges de root et donc, faites attention à ce que vous faites.

Ajouter une partition à SystemRescue

Vous pouvez copier les fichiers de votre répertoire home sur la clé de SystemRescue pour faire une sauvegarde. Le problème est que SystemRescue utilisera toute la partition et nous avons besoin d’en créer une pour mettre les données. Le truc est que SystemRescue ne vous permet de créer une telle partition et donc, on doit le faire avant de monter la clé USB. Ainsi, installez le SystemRescue sur la clé USB et branchez-la dans l’ordinateur, mais ne la montez pas encore. Utilisez ensuite un logiciel tel que Gparted pour créer une partition sur l’espace disponible.

Maintenant, nous pouvons démarrer SystemRescue et il ne montera plus automatiquement les systèmes de fichier dans la partition principale de la clé USB. La documentation de SytemRescue explique qu’on doit toujours créer des sous-répertoires dans /mnt et on ne doit rien monter sur /mnt. Aussi, lancez la commandefdisk -l pour lister les noms de blocs de périphériques et lancez les commandes suivantes (avec vos propres noms de répertoire bien sûr) :

mkdir /mnt/sdb2
mount /dev/sdb2 /mnt/sdb2

Assurez-vous de faire cette manipulation sur la seconde partition de votre clé USB et non sur votre disque dur.

Récupérer les données d’un disque dur défectueux

Il arrive parfois qu’on doive récupérer des données sur un CD/DVD ou un disque dur défectueux et dans ce cas, je recommande l’excellent GNU ddrescue. Ce dernier est inclut par défaut dans l’image ISO de SystemREscue. On doit préciser qu’il existe deux versions de GNU ddrescueDD Rescue qui est conçu parAntonio Diae est l’un des meilleurs et c’est celui qui est fournit avec SystemRescue. Il y a également GNU_ddrescue par Kurt Garloff qui est également intéressant, mais il est plus lent que le premier et il ne possède pas autant de fonctionnalités.

Pour nous compliquer encore la vie, la distribution Debian utilise ses propres appellations pour cet utilitaire. Ainsi, ddrescue est connu comme gddrescue etdd_rescue est connu comme ddrescue. Afin de les différencier, on doit savoir que gddrescue est situé dans le répertoire /sbin/ddrescue tandis que ddrescue se trouve dans /bin/dd_rescue. Tout cela n’a aucune importance si vous utilisez uniquement SystemRescue, car ce dernier utilise les noms d’origine de ces utilitaires.

GNU ddrescue est l’un des meilleurs utilitaires pour récupérer des données sur un disque dur défectuux, car il copie les fichiers au niveau des blocs et il ne s’occupe pas du système de fichier. Cette fonctionnalité ressemble à l’utilitaire dd et c’est vrai qu’il s’en inspire, mais l’inconvénient de ce dernier est qu’il ne fonctionne que sur des disques durs sains et il s’arrête quand il rencontre une erreur. De plus, il lit le média en mode séquentiel ce qui est très lent et s’il y a beaucoup de blocs défectueux, alors il ne pourra jamais terminer complètement l’analyse.

GNU ddrescue va automatiser toutes les tâches, ainsi il copiera les blocs sains tout en marquant les blocs défecteux. De plus, il crée un fichier log qui indique quelles sont les données qui ont étés récupérées. Et c’est important, car chaque démarrage d’un disque défecteux augmente la perte de donnée et donc, il est préférable d’utiliser ddrescue le plus rapidement possible et de créer un fichier log par la même occasion. Le fichier log est également utilisé par ddrescue pour connaitre les blocs qu’il a déjà analysé. Par exemple, vous lancez l’analyse et vous la stoppez pendant un moment. Si vous avez un fichier log, alors ddrescue pourra reprendre l’analyse à l’emplacement de la pause.

Si vous utilisez ddrescue pour recupérer des données d’un disque dur défectueux, la première chose est de copier l’intégralité du disque dur dans la mesure du possible. C’est ensuite seulement que vous devez faire des opérations de restauration et de vérification sur les fichiers copiés. Une règle d’or dans la récupération de données est de solliciter le moins possible le disque dur défectueux.

Vous aurez besoin d’un disque sain pour stocker les données que vous avez pu récupérer. De préférence, choisissez un périphérique USB tels qu’un disque dur externe, une carte mémoire ou une autre clé USB de grande capacité. Evidemment, un second disque dur peut être une solution, notamment si votre système supporte la norme eSATA. Ce second disque doit posséder une taille de 50 % supérieure à celui que vous êtes en train de restaurer. De même, vous ne devez pas monter le disque dur et vous pouvez le faire avec la commande :

ddrescue /dev/sda1 /dev/sdb1 logfile

Dans cet exemple, /dev/sda1 est la partition du disque dur défectueux et les données et le fichier log seront écrits dans /dev/sdb1. Notez que cette étape va écraser toutes les données existantes de /dev/sdb1. Pour récupérer les données de tout le disque défectueux, utilisez la commande :

ddrescue /dev/sda /dev/sdb logfile

Notez que si le disque dur possède plusieurs partitions et que la table des partitions est endommagée, vous devrez recréez cette dernière sur le disque dur de secours. C’est pourquoi, il est préférable de copier une partition à la fois.

ddrescue -r5 /dev/sda2 /dev/sdb1 logfile

Vous pouvez configurer ddrescue pour qu’il effectue plusieurs analyses (multipass) avec l’option -r (+ le nombre d’analyses). Dans certains cas, cette option permet de récupérer davantage de données, mais on recommande de ne pas dépasser plus de 5 tentatives analyse.

Si vous avez de la chance, ddrescue peut faire des miracles sur les CD et DVD défectueux. La première commande ci-dessous copie le disque et la seconde le transfère sur un disque vierge.

ddrescue -n -b2048 /media/cdrom image logfile

Evidemment, vous pouvez nommer le fichier image comme bon vous semble. Cet article parle uniquement des options de base du logiciel GNU ddrescue et je recommande de consulter sa documentation pour exploiter toutes ses possibilités.