Publié le 17 juin 2020 - par

Dupliquez la carte SD de votre Raspberry Pi avec rpi-clone

Ça y est, votre projet est arrivé à son terme, tout tourne parfaitement. Vous souhaitez préserver votre réalisation ou vous devez équiper plusieurs Raspberry Pi ? Il est temps de réaliser une copie de sauvegarde de la carte SD. La méthode classique consiste à réaliser une image de la carte SD, puis de la recopier sur une carte de même taille. Et c’est là que ça se corse…

Actualisation d’un article sur rpi-clone paru en 2014. rpi-clone a continué d’évoluer et l’article méritait une mise à jour.

Cloner la carte SD du Raspberry Pi

Plusieurs possibilités en fonction de la taille de la carte SD de destination

  1. La carte SD sur laquelle vous souhaitez copier l’image a une taille largement supérieure à celle de la carte d’origine. Par exemple, la carte d’origine est une carte de 8 GB – 8 Giga Octets – et la carte de destination est une carte de 16 GB. Pas de souci dans ce cas, l’image tiendra largement sur la carte. Il suffira de choisir l’option expand-filesystem dans raspi-config pour que le système de fichiers s’étende à la totalité de la place disponible (voir configuration de Raspbian).
  2. pile_ou_face-213x187La carte SD sur laquelle vous souhaitez copier l’image a une taille égale à celle de la carte d’origine. Enfin… c’est ce qui est écrit dessus. Mais… tiens, ce n’est pas la même marque ! Alors là, vous avez une chance sur deux. Si vous avez tiré le bon numéro, la carte destinataire de l’image aura la même taille que l’image, ou mieux sera un tout petit peu plus grande. Pas de souci, l’image sera copiée sur la carte.
  3. Vous avez tiré le mauvais numéro ! La carte sur laquelle vous voulez transférer l’image de votre carte SD d’origine est bien marquée comme faisant la même taille mais….
    win32diskimager_02Eh oui, il en manque… Et pourtant la carte Lexar et la Transcend utilisées sont deux HDSC de 4 Gb :-(. Essayez dans un premier temps de reformater la carte avec l’outil SD Formatter 4.0 du consortium Carte SD. Si ça ne suffit pas, continuez de lire cet article, la solution est proche !
  4. La carte SD de destination est volontairement choisie de taille plus petite. Vous avez mis au point votre projet sur une carte 16 GB et vous décidez de finaliser en produisant des cartes 8 GB qui seront largement suffisantes. Là encore soyez patient(e), la solution arrive !

rpi-clone

C’est en cherchant une solution à ce problème de transfert de carte SD quand une carte est trop petite pour recevoir l’image que j’ai abouti sur le script de Bill WILSON, déposé sur GitHub. La dernière version à ce jour est la version : 2.0.22

Objectif du script

La version 2 est une réécriture complète avec des capacités améliorées par rapport à l’original.

rpi-clone est un script shell qui permet de cloner un disque source Raspberry Pi (carte SD ou disque USB) en cours d’exécution vers un disque de destination qui sera amorçable. Les disques de destination sont des cartes SD dans un lecteur de carte USB, des clés USB ou des disques durs USB. Si vous avez booté sur une clé USB, il sera possible de cloner la clé sur une carte SD insérée dans le connecteur SD du Raspberry Pi.

Clonage par initialisation

Un clone par initialisation commence par copier l’image de la table de partition du disque source vers le disque de destination. C’est une commodité qui permet de partitionner le disque de destination afin d’éviter le partitionnement manuel. Les partitions sont ensuite clonées en faisant correspondre les systèmes de fichiers de destination aux types de systèmes de fichiers sources, puis en synchronisant les systèmes de fichiers avec les destinations. Les clones par initialisation sont utilisés lorsque les types de système de fichiers ou le nombre de partitions du disque source ne correspondent pas avec ceux de la destination. Un clone par initialisation peut également être forcé en ligne de commande. Une alternative à la copie de la table de partition source consiste à créer manuellement les partitions sur le disque de destination avec des systèmes de fichiers identiques à ceux des partitions sources.

Clonage par synchronisation

Si les types de systèmes de fichiers des partitions du disque source et du disque de destination correspondent, le clone ne démarre pas en recopiant l’image de la table de partition et en créant les systèmes de fichiers, mais monte simplement les partitions de destination correspondant à la source et synchronise les systèmes de fichiers. Après un premier clonage de disque, cette opération est une synchronisation incrémentielle qui ne copie que les fichiers qui ont changé dans le disque source. L’opération est beaucoup plus rapide qu’un clonage par initialisation.

Installation de rpi-clone

Fonctions de base
rpi-clone possède de nombreuses options. ce tutoriel vous explique comment l’installer et utiliser la fonction de base, le clonage vers une autre carte SD. Si vous souhaitez explorer les autres possibilités, reportez vous à la page de Bill.

rpi-clone est disponible sur github et est téléchargé par clonage du dépôt. Il s’agit d’un script autonome et l’installation consiste simplement à copier le fichier dans un répertoire. Lorsqu’il est lancé, il vérifie les dépendances (les programmes nécessaires à son exécution) et propose d’installer les paquets nécessaires s’ils sont absents. Actuellement, rpi-clone ne sait installer que des paquets Debian avec apt-get.

Ouvrez un terminal et tapez les commandes suivantes :

Assurez-vous que /usr/local/sbin est dans votre $PATH en tapant la commande :

Dans la réponse il doit y avoir /usr/local/sbin comme ci dessous

Vous pouvez maintenant lancer rpi-clone sans argument pour vérifier que le logiciel est bien installé et qu’il vous affiche le mode d’emploi.

et vous obtenez le mode d’emploi

Utilisation de rpi-clone

Je vous propose ici la manipulation de base : Un système tourne sur la carte SD du Raspberry Pi et je souhaite le cloner sur une autre carte SD.

Lancez rpi-clone en super user (utilisez sudo) et passe en paramètre le nom de la carte SD tel qu’il apparait dans /dev. Normalement il s’agit de /sda ou /sdb ou /sdc. Si vous avez une clé USB ou autre chose branché en USB sur le Raspberry Pi, je vous conseille de tout enlever pour éviter les catastrophes !

pi@raspberrypi:~ $ ls /dev/sd*
/dev/sda /dev/sdb /dev/sdb1 /dev/sdc

ici la commande ls  /dev/sd*  renvoie la liste des disques/cartes connectés. Mon lecteur de carte SD a 3 connecteurs et ma carte micro SD est vue comme sdb car c’est le seul disque où il y a une partition sdb1. Il faudra vous adapter en fonction de votre configuration.

Par exemple avec un disque SSD USB  ls /dev/sd* donne
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdc /dev/sdc1 /dev/sdd
où sda est mon disque SSD avec ses partitions sda1 et sda2 et ma carte SD dans le lecteur USB est en sdc avec sa partition sdc1. Si vous ne maitrisez pas cela il vaut mieux ne pas vous lancer dans l’aventure !

ATTENTION : Soyez bien certain(e) du nom de votre carte SD car l’opération de clonage va écraser sans espoir de retour toutes les données présentes sur la carte SD de destination… le blog framboise314 ne pourra pas être tenu pour respnsable des conséquences.

Les instructions à entrer sont

 ligne 1 : sudo rpi-clone sdb  (ou sda si votre disque est en sda)

ligne 4 : yes

ligne 19 : yes

ligne 40 : et à la fin la touche ENTREE

 

Après une bonne heure (sur un Pi3 B+) le clone est disponible. Il faut juste appuyer sur la touche [ENTER] pour démonter sdb.

Eteignez proprement le Raspberry Pi (shutdown) enlevez la carte du connecteur de carte micro SD sur le Raspberry Pi et mettez la carte clonée à la place.

Redémarrez.

Si tout s’est bien passé, la carte SD que vous venez de créer est un clone parfait de la carte d’origine.

Conclusion

Depuis que je vous l’avais présenté, rpi-clone a bien évolué et est toujours d’actualité pour réaliser simplement un clone de sa carte SD vers une autre carte ou vers une clé USB. Il y a d’autres possibilités que vous pourrez explorer en lisant l’aide du script. Reportez-vous également à la page du script dans les sources ci-dessous.

Sources

Clonez la carte SD de votre Raspberry Pi

 

Share Button

À propos François MOCQ

Électronicien d'origine, devenu informaticien, et passionné de nouvelles technologies, formateur en maintenance informatique puis en Réseau et Télécommunications. Dès son arrivée sur le marché, le potentiel offert par Raspberry Pi m’a enthousiasmé j'ai rapidement créé un blog dédié à ce nano-ordinateur (www.framboise314.fr) pour partager cette passion. Auteur de plusieurs livres sur le Raspberry Pi publiés aux Editions ENI.

16 réflexions au sujet de « Dupliquez la carte SD de votre Raspberry Pi avec rpi-clone »

  1. kartable

    Bonjour,
    Je reviens sur ma réflexion qui a disparue, parce qu’il semble qu’un script attende 8 minutes pour qu’on remplisse le “formulaire” (?)
    A la base il est nécessaire de copier l’image de la table de partition du disque source. Mais – détail d’importance – il existe une option permettant d’indiquer le nombre de partitions concernées et laisser de côté la (ou les) partition(s) dont on ne veut pas de copie.
    Il aurait été intéressant de permettre l’inverse, c à d de pouvoir copier sur un support non vierge de partitions en intégrant la table de partition du disque de destination, en partie, avec des options, je ne sais comment en pratique.
    Concrètement on peut imaginer une source SD de 8 Go et un disque dur de destination de 300 Go ou plus. Il faudrait pouvoir n’affecter qu’une partie du disque dur à la copie, surtout si des partitions existantes contiennent des données.

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour
      effectivement il y a un time out mais je n’ai jamais pu trouver où je pouvais modifier ce paramètre dans WordPress 🙁 désolé
      Si vous avez des demandes de modifs vous pouvez ouvrir une issue sur le github du projet bill est assez réactif et la prendra peut etre en compte.
      cdt
      françois

      Répondre
  2. Sylvain

    je viens de le lancer pour copier ma sd sur un disque 5To, l’outil graphique du bureau plante lors du clone car le disque très gros doit être en GPT.
    lors du début des opérations il mentionne bien ce problème au moins.

    “Changing destination Disk ID …The size of this disk is 4,6 TiB (5000981077504 bytes). DOS partition table format cannot be used on drives for volumes larger than 4294966784 bytes for 512-byte sectors. Use GUID partition table format (GPT)”

    je vous tiens au courant pour faire un lien avec l’article précédent de boot sur usb

    Répondre
    1. Sylvain

      bon ca ne marche pas par défaut mais on arrive à s’en sortir.
      j’ai copier avec rpi-clone 16Go vers 5To (la copie par l’interface graphique plantait direct)
      mais il crée une partition de 2To qu’on ne peut pas agrandir car MBR bloque à 2To
      il faut GPT pour plus de 2To mais … GPT ne peut pas booter…
      donc il faut une partition hybride.
      https://wiki.gentoo.org/wiki/Hybrid_partition_table

      une fois en hybride j’ai réduis la taille de la partition à 16Go pour creer avec gparted une partition secondaire du reste (en fait un disque de 5To c’est 4.5To…)
      il a fallu modifier le cmdline.txt de la partition boot pour le partuuid car elles ont été modifiées dans l’opération.
      ainsi que les partuuid dans etc/fstab de la partition contenant linux
      partuuid récupérer avec la commande blkid

      j’ai du coup un nextcloud qui tourne sur le pi4 avec de la place.
      j’ai encore des choses à régler, nextcloud a encore du mal à accepter des upload de plus de 2Go (notamment mes images *.img de carte SD)

      Répondre
      1. François MOCQ Auteur de l’article

        Bonjour Sylvain
        Votre réponse intéressera les utilisateurs avertis
        Vous êtes déjà dans la partie “avancée” de l’utilisation de rpi-clone 😀
        Un débutant ne connait ni MBR ni GPT ni gparted, il n’ira pas chercher d’infos sur un forum tout ce qu’il veut c’est faire une copie de sauvegarde de sa carte SD
        Cet article n’a que le but de lui permettre de faire sa copie et à ceux qui ne connaissent pas rpi-clone de le découvrir et d’explorer toutes ses possibilités
        Après comme tous les programmes informatiques, rpi-clone ne fait pas tout et l’auteur doit faire des choix et des compromis…
        cdt
        françois

        Répondre
  3. Doudy

    Hello,
    Moi j’ai le soucis suivant :
    Lorsque je fait :
    pi@raspberrypi-184:~ $ ls /dev/sd*
    j’obtiens :
    ls: impossible d’accéder à ‘/dev/sd*’: Aucun fichier ou dossier de ce type

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour Doudy
      j’utilise le plugin Subscribe to Comments Reloaded
      pour la gestion des abonnements aux messages. Il est à jour, j’ai essayé de le supprimer et de le réinstaller, de le désactiver et de le réactiver mais le problème subsiste
      il pourrait y avoir un conflit avec un autre plugin mais je n’ai vraiment pas le temps de tout réinstaller un à un pour trouver le souci
      je n’ai pas de solution à ce problème pour le moment (https://wordpress.org/support/topic/confirmation-link-for-subscription-ends-in-404-page/)
      j’ai alerté l’auteur du plugin
      désolé
      cdt
      françois

      Répondre
  4. CDBI30

    Bonjour,
    J’ai toujours utilisé SD Card Copier du Raspi
    Encore dernièrement, petit script python pour lire des BME280 sur le réseau (filaire et WiFi)
    Développement sur un PI4 sous Buster
    3 copies sur des SD (uniquement des ScanDisk de 16 Go)
    Une SD dans RPI2B en filaire
    2 SD dans des PI Zero W en WiFi
    Et c’a tourne sans problèmes en SSH

    Répondre

Laisser un commentaire

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

Complétez ce captcha SVP * Time limit is exhausted. Please reload CAPTCHA.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.