Raspberry Pi : créer une copie de la carte SD et la restaurer

carte sd raspberry pi 3Dans cet article je vais vous explique rapidement comment créer une copie conforme de la carte SD de votre Raspberry et comment la restaurer rapidement. Une opération qui ne prend que quelques minutes, mais qui pourrait bien vous sauver si un jour votre carte SD rend l’âme.

 

Pourquoi faire une copie de sa ?

Comme vous le savez déjà si vous avez lu mon article qui traite de la durée de vie des carte SD pour Raspberry Pi, ce dernier est un tueur en série de carte SD. Ces dernières ont été détournées de leur but premier et ne font pas long feu en tant que support pour un OS tel que Linux. Du coup, plutôt que de guérir il vaudra mieux prévenir.

Pour cela, voilà trois conseils importants :

  1. Bien choisir sa carte SD (cf. mon article sur les accessoires pour Raspberry Pi)
  2. Déplacer en RAM les logs du Raspberry Pi (cf. mon article qui explique comment prolonger la durée de vie de sa carte SD)
  3. Conserver une copie de la carte SD qui vous permettra de rapidement relancer votre Raspberry si, malgré les deux premiers conseils, votre carte SD rend l’âme (ce que nous allons voir ici).

Créer une copie identique du Raspberry Pi sans l’arrêter

Il existe plusieurs méthodes pour copier la carte SD d’un Raspberry Pi, mais il y en a une qui dans mon cas est parfaite. En effet, comme vous le savez, un de mes Raspberry Pi héberge actuellement dadarevue.com et il ne serait pas judicieux d’éteindre le Raspberry pour faire une copie de la carte SD car cela entrainerait une interruption de service. C’est pourquoi je préfère faire une copie dite « à chaud ».

Pour cela vous aurez besoin d’un support externe comme un disque dur USB ou encore comme dans mon cas un NAS. Pour ceux qui seraient intéressés par la copie sur un NAS, j’écrirais bientôt un article qui traitera un peu plus en détail de la configuration, du montage NFS du NAS et de la sauvegarde automatique. Ici on va se contenter de voir le clonage de la carte SD sans se soucier du support de destination.

Montage et préparation du support externe

Si vous utilisez un disque dur USB ou une clé USB, votre OS devrait monter le disque comme un grand. Pour savoir où se trouve votre support, vous pouvez lancer la commande suivante avant et après avoir branché votre support :

df -h

Cette commande va lister l’ensemble des partitions et leurs points de montage sur votre machine. L’option -h correspond à « human readable », c’est-à-dire qu’au lieu de donner les tailles en Octet, le système va les donner en Mo ou Go selon la taille du support.

Voyons le résultat de la commande :

Sys. de fichiers                   Taille Utilisé Dispo Uti% Monté sur
/dev/root                            1,7G    1,2G  408M  76% /
devtmpfs                             459M       0  459M   0% /dev
tmpfs                                463M       0  463M   0% /dev/shm
tmpfs                                463M     12M  451M   3% /run
tmpfs                                5,0M    4,0K  5,0M   1% /run/lock
tmpfs                                463M       0  463M   0% /sys/fs/cgroup
/dev/mmcblk0p1                        63M     21M   43M  33% /boot
log2ram                               40M    3,5M   37M   9% /var/log
192.168.1.25:/mnt/HD/HD_a2/Pi-Save   985G    242G  743G  25% /mnt/pi-save

Dans mon cas, la ligne qui m’intéresse est la dernière. C’est une des partitions de mon NAS et on peut voir à la fin de la ligne que cette partition est montée sur /mnt/pi-save sur mon Raspberry Pi. C’est là que nous allons copier notre image de la carte SD.

Je vais donc créer le dossier sd_img dans /mnt/pi-save pour recevoir l’image de ma carte SD:

mkdir /mnt/pi-save/sd_img

Attention, si vous utilisez une clé USB et que votre carte SD fait plus de 4Go, n’oubleiez pas de vérifier que le système de fichier n’est pas n FAT32. Si c’est le cas votre copie va lamentablement échouer après 4Go de copie. Vous devrez donc changer le système de fichier : Ext4 fera l’affaire.

Création de l’image de la carte SD

Voilà, nous avons notre support prêt, plus qu’à passer à la copie. Puisque la copie d’une carte SD peut prendre un certain temps, nous allons installer un petit utilitaire qui va nous permettre de savoir où nous en sommes dans la copie.

sudo apt-get install pv

Maintenant, il faut savoir où se trouve notre carte SD dans les « device » de Linux. Pour cela nous allons refaire un petit df -h comme au-dessus.

df -h

Sys. de fichiers                   Taille Utilisé Dispo Uti% Monté sur
/dev/root                            1,7G    1,2G  408M  76% /
devtmpfs                             459M       0  459M   0% /dev
tmpfs                                463M       0  463M   0% /dev/shm
tmpfs                                463M     12M  451M   3% /run
tmpfs                                5,0M    4,0K  5,0M   1% /run/lock
tmpfs                                463M       0  463M   0% /sys/fs/cgroup
/dev/mmcblk0p1                        63M     21M   43M  33% /boot
log2ram                               40M    3,5M   37M   9% /var/log
192.168.1.25:/mnt/HD/HD_a2/Pi-Save   985G    242G  743G  25% /mnt/pi-save

Si vous avez fait une installation standard vous devriez voir /boot monté sur un support du type /dev/mmcblk0p1 comme dans l’exemple au dessus. Du coup, notre carte micro SD est dans /dev/mmcblk0 (sans le p1).

On va donc maintenant faire une copie brute de /dev/mmcblk0 à l’aide de l’utilitaire dd de Linux en gardant un œil sur la progression grâce à pv.

Voilà la commande générique :

dd if=carteSD bs=4 | pv -pterb | dd of=SupportExterne

Ce qui donne dans mon cas, en remplaçant carteSD et SupportExterne par leurs emplacements:

dd if=/dev/mmcblk0 | pv -pterb | dd of=/mnt/pi-save/sd-img/SD_dadarevue.com.img

Normalement, la commande devrait vous retourner quelque chose comme ceci après un certain temps :

464+1 enregistrements luss]
464+1 enregistrements écrits
1948254208 octets (1,9 GB) copiés, 815,668 s, 2,4 MB/s

Voilà, votre carte SD est clonée à l’identique sur votre support externe. Seulement, si votre carte SD fait 32Go et que vous n’avez que 4Go de données dessus, votre copie fera quand même 32Go.

Pour éviter cela vous pouvez la compresser avec gzip:

gzip /mnt/pi-save/sd-img/SD_dadarevue.com.img

Ou tout simplement avec cette commande qui fait la copie avec compression à la volée  :

dd if=/dev/mmcblk0 | pv -pterb | gzip -1 – | dd of=/mnt/pi-save/sd-img/SD_dadarevue.com.img

Votre carte SD de 32Go devrait maintenant ne faire que les 4Go de données qui sont dessus. Attention, ceci ne veut pas dire que les 28Go restant de vide ont été supprimé, ils ont juste été compressé. Si vous copiez votre image vers une nouvelle carte SD elle devra faire au moins 32Go.

Restaurer et récupérer les données

Monter l’image pour récupérer des données

Vous avez votre image de carte SD et maintenant vous voulez récupérer quelques fichiers de configuration dessus. Vous pourriez restaurer tout le système et récupérer votre fichier de configuration mais c’est une longue et fastidieuse opération. Heureusement, il y a beaucoup plus simple.

On va simplement monter l’image en local et récupérer les fichiers qui nous intéressent.

Pour cela, il faut commencer par créer le dossier où vous allez monter votre image :

sudo mkdir /mnt/MonMontage

Voilà, maintenant on monte notre image :

sudo mount -o loop   /mnt/pi-save/sd-img/SD_dadarevue.com.img   /mnt/MonMontage

Normalement si vous allez voir dans /mnt/MonMontage, vous devriez trouver votre système et tous vos fichiers.

Une fois que vous aurez récupéré vos fichiers, il ne reste plus qu’à démonter notre image :

sudo umount /mnt/MonMontage

Restaurer un Raspberry Pi depuis une image de carte SD

J’allais oublier l’essentiel…si vous souhaitez faire une sauvegarde, c’est avant tout pour pouvoir restaurer votre système en cas de crash.
Pour cela, rien de plus simple, il suffit de suivre les même étapes que pour créer une carte SD de Raspbian.

Je vous renvoi donc à l’article que j’ai écrits sur la création d’une carte SD pour Raspbian. La seule différence est qu’au lieu d’utiliser l’image de Raspbian vous allez utiliser la votre.

Conclusion

Grâce à ce tutoriel, vous devriez pouvoir faire une copie de votre système tel qu’il est à l’instant T et être capable de le restaurer en quelques minutes en cas de problème.

Cependant, ne confondez pas cette méthode de copie de l’image de votre carte SD avec une méthode de sauvegarde de vos données. Le but ici est de garder un clone de votre OS. Si vous souhaitez sauvegarder les données qui se trouvent sur votre Raspberry ce n’est clairement pas la bonne méthode.

Je ferais bientôt un autre article à ce propos qui vous expliquera comment faire des sauvegardes automatiques de votre Raspberry (données et système).

 

 

 

2 commentaires

  1. Bonjour,
    je viens de découvrir vos tutos. merci très pratique…
    Vous parlez de 2 points qui m’intéresse :
    – Je ferais bientôt un autre article à ce propos qui vous expliquera comment faire des sauvegardes automatiques de votre Raspberry (données et système)
    – J’écrirais bientôt un article qui traitera un peu plus en détail de la configuration, du montage NFS du NAS et de la sauvegarde automatique.
    Par contre je ne trouve pas ces articles.
    Si vous les avez déjà écrit, pouvez vous me communiquer le lien.
    Merci pour votre aide.

    1. Bonjour,

      Malheureusement les articles en questions sont encore en cours d’écriture.
      Je vous préviendrais dès qu’il seront publiés 😉

      En tout cas merci pour le commentaire
      David pour DaDaRevue

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *