Le système d'exploitation, les logiciels et possiblement les données de votre Raspberry Pi seront stockés sur la toute petite carte micro SD insérée dans le Raspberry Pi.
Cette carte est fragile et pourrait connaître des ratées.
Une des principales causes de carte micro SD corrompue est un arrêt du Raspberry Pi non sécuritaire, par exemple une panne de courant ou encore un débranchement sans avoir fait sudo halt.
C'est pourquoi il est important d'en prendre régulièrement une copie de sécurité afin de vous assurer de pouvoir réinstaller le tout facilement si le besoin s'en fait sentir.
Je vous propose ici quelques techniques intéressantes :
Attention : selon la technique choisie, la taille de la carte et les configurations de votre système, l'opération peut prendre facilement entre 20 minutes et une heure.
Il existe plusieurs façons de créer un fichier image de la carte micro SD du Raspberry Pi.
La commande Linux dd permet d'effectuer une copie intégrale de la carte micro SD. Le résultat sera un fichier image qui pourra au besoin être réinstallé (<span class="terme">flashé</span>) sur une carte micro SD.
Cette technique nécessite de retirer la carte du Raspberry Pi pour l'insérer dans un lecteur de carte micro SD directement sur votre ordinateur ou sur un lecteur externe. Vous pouvez même insérer la carte dans un lecteur branché sur un autre Raspberry Pi (qui roulera à l'aide de sa propre carte micro SD) pour effectuer l'opération.
Voici d'abord les instructions sous Mac. Suivront les instructions sous Linux. Vous remarquerez que la commande dd présente quelques différences entre les deux systèmes.
Notez que si la carte micro SD est utilisée pour un système d'exploitation HassOS, ceci ne fonctionnera pas puisque macOS n'est pas capable de lire les cartes sur lesquelles HassOS est installé.
La première étape pour effectuer la copie consite à retrouver le point de montage de la carte. Avant d'insérer la carte, ouvrez une fenêtre Terminal et entrez la commande df. Insérez ensuite la carte micro SD puis entrez à nouveau la commande df. La ou les lignes ajoutées correspondent à la carte micro SD. Sur mon ordinateur Mac, j'obtiens ceci :
/dev/disk2s1 5029504 4846592 182912 97% 0 0 100% /Volumes/RECOVERY
/dev/disk2s6 516188 108923 407265 22% 0 0 100% /Volumes/boot
Ces entrées correspondent aux deux partitions de ma carte (s1 et s6). Le point de montage est la partie commune entre les deux, c'est-à-dire /dev/disk2.
Si la carte ne peut pas être lue par votre ordinateur, il est tout de même possible de connaître son point de montage à l'aide de la commande diskutil list. On peut reconnaître ici que ma carte de 32 Go est montés sous /dev/disk2.
/dev/disk2 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *32.0 GB disk2
1: Microsoft Reserved 33.6 MB disk2s1
2: Linux Filesystem 25.2 MB disk2s2
3: Linux Filesystem 268.4 MB disk2s3
4: Linux Filesystem 25.2 MB disk2s4
5: Linux Filesystem 268.4 MB disk2s5
6: Linux Filesystem 8.4 MB disk2s6
7: Linux Filesystem 100.7 MB disk2s7
8: Linux Filesystem 31.3 GB disk2s8
Entrez maintenant la commande dd comme suit. Ajustez le point de montage puis le nom du fichier.
Remarquez le r dans le point de montage (/dev/rdisk2), qui permet, sur un système macOS, une opération beaucoup plus rapide.
Je vous suggère de terminer le nom du fichier par la date courante au format aaaa-mm-jj.
sudo dd bs=32m if=/dev/rdisk2 of=nom-du-fichier-aaaa-mm-jj.img
Si vous avez accès à un ordinateur Linux ou si vous avez une autre carte micro SD qui peut servir à faire rouler votre Raspberry Pi, vous pourrez utiliser le système Linux pour créer une image de votre carte.
pi@raspberrypi:~ $ lsblk -fp
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
/dev/sda
├─/dev/sda1 vfat FAT32 boot 0193-3CD3
└─/dev/sda2 ext4 1.0 rootfs a2e795f4-b2cf-4ea1-a687-ddf67a64c0a8
/dev/mmcblk0
├─/dev/mmcblk0p1 vfat FAT32 boot 0193-3CD3 223.66M 12% /boot
└─/dev/mmcblk0p2 ext4 1.0 rootfs a2e795f4-b2cf-4ea1-a687-ddf67a64c0a8 26G 4% /
Je vous suggère de terminer le nom du fichier par la date courante au format aaaa-mm-jj.
sudo dd bs=32M if=/dev/sda of=nom-du-fichier-aaaa-mm-jj.img
Attention : cet utilitaire pose souvent problème, ce n'est pas la meilleure technique à utiliser.
La commande dd n'existe pas nativement sous Windows. Heureusement, il est possible d'installer un petit utilitaire qui fera le travail.
Dans cette image, on voit que la carte correspond au disque 1.
./dd if=\\?\Device\Harddisk1\Partition0 of=nom-du-fichier-aaaa-mm-jj.img bs=1M
L'avantage de cette technique, c'est qu'elle peut être utilisée peu importe le système d'exploitation de votre ordinateur puisque c'est le Raspberry Pi qui créera l'image.
Son grand désavantage : la copie est extrêmement longue à réaliser et mes tests se sont souvent soldés par une erreur d'écriture :-(
Notez que si la carte micro SD est utilisée pour un système d'exploitation HassOS, ceci ne fonctionnera pas puisque le système d'exploitation est optimisé pour Home Assistant et plusieurs opérations n'y sont pas permises.
La carte micro SD demeurera dans le Raspberry Pi et vous utiliserez une clé USB pour accueillir le fichier image. Ce fichier pourra ensuite être copié sur votre ordinateur.
Notez que la clé USB doit être formatée dans un format lisible par un système de fichier Linux et qui supporte les gros fichiers, par exemple exFAT.
Pendant tout le processus, vous ne devez effectuer aucune opération sur le Raspberry Pi afin d'éviter que des changements surviennent dans le système de fichiers, ce qui pourrait corrompre l'image.
Vous reconnaîtrez votre clé à son nom (LABEL). Vous devez noter le nom du périphérique qui représente la clé USB (ici : /dev/sda2) ainsi que celui du disque dur (/dev/mmcblk0).
pi@raspberrypi:~ $ lsblk -fp
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
/dev/sda
├─/dev/sda1 vfat FAT32 EFI 67E3-17ED
└─/dev/sda2 exfat 1.0 macle 633B-0FD4
/dev/mmcblk0
├─/dev/mmcblk0p1 vfat FAT32 boot 0193-3CD3 223,6M 12% /boot
└─/dev/mmcblk0p2 ext4 1.0 rootfs a2e795f4-b2cf-4ea1-a687-ddf67a64c0a8 24G 10% /
sudo mkdir /mnt/usb
sudo mount /dev/sda2 /mnt/usb -o uid=pi,gid=pi
sudo dd bs=32M if=/dev/mmcblk0 of=/mnt/usb/nom-du-fichier-aaaa-mm-jj.img
scp pi@192.168.1.145:/mnt/usb/nom-du-fichier-aaaa-mm-jj.img /dossierlocal
sudo umount /dev/sda2
Sous Windows, il est également possible de créer une image d'une carte micro SD à l'aide d'un outil spécialisé.
Le plus populaire s'appelle Win32 Disk Imager. Malheureusement, il a du mal à rouler sur certains systèmes récents.
On m'a rapporté que le fait de fermer Google Drive pouvait régler le problème. À vous d'essayer...
Je vous propose tout de même quelques alternatives mais je ne les ai pas toutes testées.
Peu importe le logiciel utilisé, vous pourrez remettre l'image sur une carte micro SD à l'aide de Raspberry Pi Imager.
Pour ceci, vous aurez besoin d'un lecteur de carte USB que vous brancherez sur le Pi et d'une seconde carte, évidemment.
Voici le lecteur que j'utilise :
L'avantage de cette technique est qu'elle permet de faire la copie sans retirer la carte du Raspberry Pi. Moins de manipulations de la carte = diminution des risques de l'endommager.
La procédure sera différente selon que le système d'exploitation du Pi contient une interface graphique ou non.
Si vous travaillez avec un Raspberry Pi OS complet (donc, pas la version Lite), voici la procédure.
Sous Raspberry Pi OS Lite, il est possible d'installer une version en ligne de commande de piclone.
Attention : si vous travaillez avec un autre système d'exploitation, par exemple HassOS, et qu'il n'est pas possible d'y installer Git (sudo apt install git), vous devrez plutôt créer une image de la carte sur votre ordinateur (technique présentée plus haut) puis flasher cette image sur l'autre carte.
Les étapes qui suivent sont en fait une traduction de la procédure présentée dans le répertoire GitHub de l'utilitaire piclone_cmd : https://github.com/nwright-mcc/piclone_cmd.
git clone https://github.com/nwright-mcc/piclone_cmd.git
sudo apt-get install uuid
ls /dev/sd*
pi@raspberrypi:~ $ ls /dev/sd*
/dev/sda /dev/sda1
cd ~/piclone_cmd
sudo ./piclone_cmd /dev/sda
Plusieurs logiciels ou systèmes complexes, tels des boîtes domotiques, offrent des fonctionnalités pour effectuer une sauvegarde complète des fichiers et de la base de données qu'ils utilisent.
C'est le cas notamment avec des boîtes domotiques telles Jeedom ou Home Assistant.
Une telle sauvegarde ne comprend que les fichiers de la boîte domotique, pas ceux du système d'exploitation. Pour la restaurer, il faut d'abord réinstaller le système d'exploitation puis une copie vierge de la boîte domotique.
La procédure de différents systèmes est détaillée ici :
« Backups ». Raspberry Pi. https://www.raspberrypi.org/documentation/linux/filesystem/backup.md
« Back up your Raspberry Pi: how to save and restore files ». The MagPi Magazine. https://magpi.raspberrypi.org/articles/back-up-raspberry-pi
« nwright-mcc/piclone_cmd ». GitHub. https://github.com/nwright-mcc/piclone_cmd
▼Publicité