Formation PUB420 : Système domotique DIY, 2020 L'unité centrale du système domotique (Raspberry Pi)

2.14 Copie de sécurité de la carte micro SD du Raspberry Pi


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.

Copie de l'image de la carte sur un ordinateur (fichier .img)

Il existe plusieurs façons de créer un fichier image de la carte micro SD du Raspberry Pi.

Utilitaire dd à partir d'un ordinateur Mac ou Linux

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.

macOS

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 :

  • Résultat à l'écran

    /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.

    Résultat à l'écran

    /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.

    Terminal macOS

    sudo dd bs=32m if=/dev/rdisk2 of=nom-du-fichier-aaaa-mm-jj.img

  • Le fichier sera créé dans le dossier courant. Vous pouvez utiliser la commande pwd (Print Working Directory) pour connaître son chemin exact.
  • L'opération inverse vous permettra de réinstaller votre carte à partir de cette image.

Linux

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.

  • Vous devez connaître le point de montage de la carte. Avant d'insérer la carte, entrez la commande lsblk -fp. Insérez ensuite la carte micro SD puis entrez à nouveau la commande lsblk -fp. La ou les lignes ajoutées correspondent à la carte micro SD. Sur mon ordinateur Linux, j'obtiens ceci :
    Linux

    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%  /

  • Entrez maintenant la commande dd comme suit. Ajustez le point de montage puis le nom du fichier.

    Je vous suggère de terminer le nom du fichier par la date courante au format aaaa-mm-jj.

    Terminal Linux

    sudo dd bs=32M if=/dev/sda of=nom-du-fichier-aaaa-mm-jj.img

  • Le fichier sera créé dans le dossier courant. Vous pouvez utiliser la commande pwd (Print Working Directory) pour connaître son chemin exact.
  • L'opération inverse vous permettra de réinstaller votre carte à partir de cette image.

Utilitaire dd pour Windows

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.

  • Téléchergez l'utilitaire à partir de ce site : http://www.chrysocome.net/download. Choisissez la dernière version stable. 
  • Décompressez le fichier .zip puis copiez le fichier dd.exe à l'endroit de votre choix.
  • Insérer la carte micro SD dans l'ordinateur Windows.
  • Pour connaître le numéro attribué à la carte micro SD, faites un clic droit sur le bouton Windows puis choisissez Gestion du disque.

    Dans cette image, on voit que la carte correspond au disque 1.

    Gestion du disque

  • Ouvrez une fenêtre PowerShell.
  • Placez-vous dans le dossier qui contient le fichier dd.exe.
  • Lancez cette commande afn de créer une image de la carte micro SD. Adaptez le numéro du disque (ici : 1) à celui que vous aurez trouvé plus tôt.
    PowerShell

    ./dd if=\\?\Device\Harddisk1\Partition0 of=nom-du-fichier-aaaa-mm-jj.img bs=1M

Utilitaire dd directement sur le Raspberry Pi pendant que la carte est utilisée

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.

  • Branchez une clé USB sur le Raspberry Pi.
  • Pour connaître le point de montage de la clé USB, entrez la commande lsblk -fp.

    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).

    Résultat à l'écran

    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%   /

  • Il faut maintenant monter la clé USB, c'est-à-dire la rendre disponible pour le système d'exploitation.
    Terminal du Raspberry Pi

    sudo mkdir /mnt/usb
    sudo mount /dev/sda2 /mnt/usb -o uid=pi,gid=pi

  • Lancez la commande dd pour effectuer la copie du système vers la clé USB.
    Terminal du Raspberry Pi

    sudo dd bs=32M if=/dev/mmcblk0 of=/mnt/usb/nom-du-fichier-aaaa-mm-jj.img

    Patientez, cette étape prendra de loooooonnngues minutes, voire même une heure entière sans que rien ne se passe à l'écran.
  • Vous pouvez maintenant copier ce fichier sur votre ordinateur. J'aime bien utiliser le terminal de l'ordinateur pour effectuer cette copie mais l'inverse est également possible. Entrez cette commande en prenant soin de changer pi pour le nom de votre usager sur Raspberry Pi OS et l'adresse IP pour celle du Pi.
    Terminal de l'ordinateur

    scp pi@192.168.1.145:/mnt/usb/nom-du-fichier-aaaa-mm-jj.img /dossierlocal

  • Vous devez finalement démonter la clé USB.
    Terminal du Raspberry Pi

    sudo umount /dev/sda2

Win32 Disk Imager et autres utilitaires pour Windows

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.

Copie de la carte sur une autre carte

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 :

Lecteur de carte micro SD

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.

Avec interface graphique

Si vous travaillez avec un Raspberry Pi OS complet (donc, pas la version Lite), voici la procédure.

  • Sur le Raspberry Pi, rendez-vous dans le menu Accessoires / SD Card Copier.

    Option de menu SD Card Copier

  • Choissez la source et la cible puis cliquez sur Start. Pas plus compliqué que ça!

    SD Card Copier

Sans interface graphique

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.

  • Installez piclone_cmd :
    Terminal

    git clone https://github.com/nwright-mcc/piclone_cmd.git

  • Installez uuid :
    Terminal

    sudo apt-get install uuid

  • Insérez votre carte micro SD dans le lecteur connecté au port USB du Raspberry Pi.
  • Déterminez quel nom porte le point de montage :
    Terminal

    ls /dev/sd*

    Vous obtiendrez en sortie quelque chose du genre /dev/sda /dev/sda1.
    Résultat à l'écran

    pi@raspberrypi:~ $ ls /dev/sd*
    /dev/sda /dev/sda1

    Ceci signifie que votre carte a comme point de montage /dev/sda. Si vous obtenez autre chose du genre /dev/sdb, il vous faudra retirer un des périphériques branchés afin de déterminer lequel correspond à la carte micro SD du lecteur USB.
  • Lancez maintenant l'opération de clonage en prenant soin d'utiliser le bon point de montage :
    Terminal

    cd ~/piclone_cmd

    sudo ./piclone_cmd /dev/sda

    piclone_cmd

Restaurer une sauvegarde d'un système complexe

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 :

Pour plus d'information

« 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é

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre