Publié le 28 février 2014 - par

Clonez la carte SD de votre Raspberry Pi

clone_250pxÇa y est, votre projet est arrivé à son terme, tout tourne parfaitement. Comme 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…

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 4 GB – 4 Giga Octets – et la carte de destination est une carte de 8 GB. Pas de souci dans ce cas, l’image tiendra largement sur la carte. Il suffira de choisir l’option expand-rootfs 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 8 GB et vous décidez de finaliser en produisant des cartes 4 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.

Objectif du script

rpi-clone est un script shell qui va sauvegarder (cloner en utilisant dd et rsync) le système de fichier d’un Raspberry Pi en fonctionnement sur une carte SD de destination connectée sur un port USB du Raspberry Pi (via un lecteur de carte USB). Bill l’utilise pour gérer les sauvegardes de ses cartes SD de Raspberry Pi sur des cartes SD de sauvegarde taille différente (inférieure ou supérieure) à la carte SD sur laquelle le Raspberry Pi a démarré.

rpi-clone peut cloner le système en cours d’exécution sur une nouvelle carte SD ou peut réaliser un rsync incrémental pour sauvegarder des cartes SD utilisées sur Raspberry Pi. Pendant l’opération de clonage, rpi-clone vous donne la possibilité de donner un nom à la partition 2 de sorte que vous pouvez garder une trace des cartes SD sauvegardées. Il suffit de coller une étiquette portant le même nom sur chaque carte SD. Vous pouvez alors consulter la date du dernier clone de cette carte dans le fichier journal rpi-clone /var/log/rpi-clone. Bill utilise la convention suivante pour son jeu de cartes : les cartes de 8 Go s’appellent  SD-RPI-8A , SD-RPI-8B, … et les cartes SD de 4 GB SD-RPI-4A, …

Si la carte SD de destination a déjà des partitions existantes 1 et 2, correspondant aux types de partition en cours d’exécution, rpi-clone suppose (à moins d’utiliser l’option -f) que la carte SD est une sauvegarde existante avec les partitions correctement dimensionnées et mises en place pour un Raspberry Pi. Tout ce qui est nécessaire est de monter les partitions et de les synchroniser avec le système en cours de fonctionnement.

Si ces partitions sont introuvables (ou si vous avez utiliser -f), rpi-clone demande si vous voulez initialiser les partitions sur la carte SD de destination. Cela se fait par un ‘dd’ partiel  de la partition de démarrage /dev/mmcblk0 vers la carte SD /dev/SDN suivi d’un redimensionnement et d’un mkfs.ext4 de /dev/SDN partition 2. Cela crée une partition 1 contenant tous les fichiers de démarrage et une partition 2 rootfs vide, mais ayant la bonne taille. Les partitions de la carte SD sont ensuite montés sur /mnt/clone et synchronisées au système en cours de fonctionnement .

Vous devez éviter l’exécution d’autres programmes pouvant écrire sur le disque lors de l’exécution de rpi-clone, mais rpi-clone fonctionne très bien quand on le lance à partir d’une fenêtre de terminal. Cependant il vaut mieux fermer le navigateur s’il est ouvert car il peut écrire de nombreux fichiers temporaires.

rpi-clone doit être exécuté en tant que root et vous devez avoir le programme rsync installé sur votre système.

Quand rpi-clone a terminé l’opération de clonage il s’arrête et demande confirmation avant de démonter la carte SD sur laquelle le clone a été réalisé. C’est à ce moment que vous pouvez aller voir les résultats du clonage ou faire les derniers ajustements si nécessaire. Par exemple, si vous utilisez deux Raspberry Pi et que vous en utilisez un comme maître, lorsque vous réalisez le clone destiné au deuxième Pi, faites un « cd /mnt/clone/etc » et corrigez les fichiers nécessaires à la personnalisation du deuxième Raspberry Pi. Cela peut par exemple consister à changer le nom d’hôte et modifier le fichier de gestion de l’interface réseau. Il suffit de garder tous les fichiers sur le maître :

Dans cet exemple, rpi0 est la machine maître, donc il n’est pas vraiment nécessaire de garder les copies .rpi0, mais c’est juste au cas où. Ensuite, lors du clonage la mise à jour se fait simplement en recopiant les fichiers .rpi1 avant de laisser rpi-clone démonter les partitions. Mais n’oubliez pas de faire un ‘cd’ pour sortir de l’arborescence /mnt/clone avant de dire à rpi-clone qu’il peut procéder au démontage…github_rpi-clone

rpi-clone est sur ​​github, pour le récupérer et l’installer dans /usr/local/sbin : rendez vous sur https://github.com/billw2/rpi-clone et téléchargez le fichier zip, ensuite :

ou, utilisez git pour cloner le dépôt :

Utilisation de rpi-clone

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.

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…

pi@raspberrypi ~ $ sudo rpi-clone sda

Clone destination disk   :  sda
Clone destination rootfs :  /dev/sda2 (no label) on /mnt/clone
Clone destination bootfs :  /dev/sda1 on /mnt/clone/boot
Verbose mode             :  off
===============================
Final check, is it Ok to proceed with the clone (yes/no)?: y
=> Mounting /dev/sda2 (no label) on /mnt/clone
=> Mounting /dev/sda1 on /mnt/clone/boot
===============================
Starting the filesystem rsync to sda
(This may take several minutes)...
*** Done with clone to /dev/sda ***
Started: 17:30:26    Finished: 17:41:47

Hit Enter when ready to unmount the /dev/sda partitions...
unmounting /mnt/clone/boot
unmounting /mnt/clone
===============================
pi@raspberrypi ~ $

Il a fallu environ 10 minutes pour cloner une carte SD vers une autre.

  • Raspberry Pi Model B / Rev. 2 – pas d’overclock
  • Carte d’origine : Micro SDHC  4 Go SanDisk Class 4
  • Carte de destination : Lexar Premium – SDHC 4 Go – Class 6 dans un lecteur All in 1 Amarina branché sur le port USB.

rpi-clone en français

Avec l’accord de Bill, je vous propose une version de rpi-clone dont les messages sont francisés (pas les commentaires, mais ils ne sont pas affichés pendant le déroulement du clonage…). On s’y jette ?

pi@raspberrypi ~ $ wget https://www.framboise314.fr/docs/rpi-clone/rpi-clone.sh
--2014-02-28 18:47:42--  https://www.framboise314.fr/docs/rpi-clone/rpi-clone.sh
Résolution de www.framboise314.fr (www.framboise314.fr)... 88.190.253.244
Connexion vers www.framboise314.fr (www.framboise314.fr)|88.190.253.244|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 11956 (12K)
Sauvegarde en : «rpi-clone.sh»
100%[======================================] 11 956      --.-K/s   ds 0,01s
2014-02-28 18:47:42 (799 KB/s) - «rpi-clone.sh» sauvegardé [11956/11956]
pi@raspberrypi ~ $ sudo chmod +x rpi-clone.sh
pi@raspberrypi ~ $ 

Commencez par récupérer la version française de rpi-clone sur framboise314 :
wget https://www.framboise314.fr/docs/rpi-clone/rpi-clone.sh

Donnez les droits d’exécution :
sudo chmod +x rpi-clone.sh

Enfin lancez le clonage. Ici j’ai forcé l’initialisation des partitions de la carte de destination car elle avait déjà servi pour des tests.

Conclusion

Un outil à garder précieusement si vous avez besoin de réaliser des clones de vos cartes SD sur des cartes différentes de la carte d’origine.

Merci à Bill WILSON pour l’écriture de ce script et pour son autorisation de le traduire en français.

Vous avez testé,utilisé ce script ou vous en utilisez un autre (peut-être encore mieux que celui-là ?), n’hésitez pas à en informer les lecteurs du blog dans les commentaires ci-dessous. Ils sont à votre disposition !

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.

80 réflexions au sujet de « Clonez la carte SD de votre Raspberry Pi »

  1. fidoboulettes

    Pas mal du tout ce script… ce qui serait bien c’est de pouvoir l’adapter pour non pas cloner la carte sur une autre SD mais de pouvoir l’envoyer sur un site distant histoire de faire des sauvegardes… après il y a peut être moyen (?)

    Répondre
    1. bil

      Bonjour à tous
      Je ne sais pas si je suis dans la bonne section pour poser ma question.Désolé si c’est le cas.
      Je voudrais savoir si il existe une solution pour empècher le clonage de la carte sd du raspberry.

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

        Bonjour
        pas de souci pour le bon endroit… sur framboise314 le modérateur est magnanime 😉
        Malheureusement il n’est pas possible d’empêcher le clonage de la carte
        il suffit d’insérer la carte dans un lecteur et un programme comme win32diskimager ou dd sous Linux copie la carte sans problème…
        cordialement
        François

        Répondre
  2. bon_lth

    Ou à la main :
    – dd pour faire une image de la carte SD ;
    – kpartx pour déclarer la table de partition dans l’OS ;
    – gparted pour diminuer une partition ;
    – dd pour copier les partitions redimensionnés sur la nouvelle carte SD.

    Répondre
    1. mic78000

      Bonjour,
      Tu aurais la syntaxe que j’essaie ton système ? (pas réussi avec le système proposé dans l’article : Le Raspi refuse de redémarrer avec la carte clonée.

      Répondre
        1. admin Auteur de l’article

          Bonjour Mic
          J’ai testé avec plusieurs cartes différentes en classe 4 et 6 et ça a fonctionné. La syntaxe est celle indiquée. Il n’y a pas de message d’erreur?
          tu as bien attendu la fin du script pour que les partitions du clone soient démontées correctement?
          Cordialement
          François

          Répondre
          1. mic78000

            En fait, j’ai un message d’erreur au départ qui revient après :
            pi@raspberrypi ~ $ sudo ./rpi-clone.sh sda -f

            *** Forçage des partitions sur la destination ‘sda’ ***
            Les partitions existantes sur le disque de destination ‘sda’ sont:
            Error: Can’t have a partition outside the disk!
            … Impossible de trouver un système de fichier de démarrage de type: fat32

            Ce script peut initialiser la structure de partition du disque de destination
            en s’appuyant sur celle du système actuel et ensuite redmensionner
            la partition 2 (le système de fichiers racine) pour utiliser tout l’espace de la carte SD.
            Voulez vous initialiser la destination /dev/sda? (oui/non): o

            Copie de la structure des partitions, copie de 1455 megaoctets…
            1455+0 enregistrements lus
            1455+0 enregistrements écrits
            1525678080 octets (1,5 GB) copiés, 112,054 s, 13,6 MB/s
            Redimensionnement de la partition 2 (système de fichiers racine) pour utiliser tout l’espace de la carte SD…
            mke2fs 1.42.5 (29-Jul-2012)
            mkfs.ext4: taille_i_noeud (128) * nombre_i_noeuds (0) trop grand pour un
            système de fichiers avec 0 blocs, indiquer un ratio_i_noeud (-i)
            plus grand ou un nombre d’i-noeud plus petit (-N).

            /dev/sda est initialisé et redimensionné. Ses partitions sont:
            Error: Can’t have a partition outside the disk!
            e2label: La tentative de lecture d’un bloc depuis le système de fichiers a produit une lecture tronquée lors de la tentative d’ouverture de /dev/mmcblk0p2
            Impossible de trouver un superbloc de système de fichiers valide.

            Vous avez démarré /dev/mmcblk0p2 nom du système de fichiers racine actuel:
            Vous pouvez donner un nom au systèmes de fichiers racine destination /dev/sda2:

            Répondre
        2. Caro

          Bonjour Mic,
          J’ai eu le même problème que toi « Can’t have a partition outside the disk! » et en fait c’était un problème avec ma carte sd, j’ai réalisé la correction expliquée sur cette page et depuis ça fonctionne très bien :
          http://gparted.org/h2-fix-msdos-pt.php#partition-outside-disk

          Tu as peut être corrigé ton problème depuis le temps mais si ça peut servir à quelqu’un.
          En tout cas merci à Bill pour le développement et à toi François pour la traduction.

          Répondre
    2. Pat

      Je ne suis pas très à l’aise avec raspbian…
      Auriez-vous un exemple d’utilisation de ces lignes de commandes ?

      …je désire sauvegarder mon environnement Openmediavault sur une carte micro-sd vierge.
      Win32DiskImager ne fonctionne pas (nombre de secteurs différents) et SDFormatter 4.0 non plus (disque non reconnu)

      Merci bcp !

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

        Bonjour Patrick

        puisque vous utilisez Win32DiskImager commencez par faire une sauvegarde de
        votre carte sur votre disque dur (faites Read et nommez le fichier
        *ce_que_vous_voulez.img*)
        après vous pourrez réécrire cette image sur une autre carte SD de taille
        plus importante si vous n’avez pas de carte de la même taille.
        cordialement
        François

        Répondre
        1. Pat

          Merci d’avoir répondu aussi rapidement !!
          Oui, j’ai déjà fait une sauvegarde de l’image sur mon disque.
          Mon problème était de l’écrire sur une nouvelle carte SD de la même taille : la carte initiale fait 16GB, cela m’oblige à acheter une carte de 32GB pour la sauvegarde…ce que je voulais éviter pour un problème de coût car j’ai 2 sauvegardes à faire (2 raspberry)

          Répondre
          1. extraternet

            Vérifier tout de même que la taille de votre image est cohérente avec celle de votre SD.
            Pour ma part le ce logiciel me fait une image de 137Mo pour une carte SD de 8Go (6mois plus tard, la taille de l’image est la même à l’octet près).

            Répondre
    3. AGUINI

      bonjour,
      « – kpartx pour déclarer la table de partition dans l’OS ; »
      je ne comprends pas ?
      j’utilise linux
      avec la commande dd j’ai fait une image disque d’un carte SD 32Go samsung
      je voudrais copier sur une carte SD 32Go Pny mais qui contient un peu moins de secteurs
      merci

      Répondre
  3. Ping : Clonez la carte SD de votre Raspberry Pi | Fram...

  4. Ping : Clonez la carte SD de votre Raspberry Pi | Libr...

  5. Ping : Clonez la carte SD de votre Raspberry Pi | Fram...

  6. Oliv'

    Ca n’a pas fonctionné …
    J’ai fait 3 essais avec des cartes SD différentes.
    Les 2 premières étaient des classe 10 … j’ai cru que c’était à cause de cela (la seconde a fait un très grand nombre d’erreurs lors du clonage).
    Ma dernière tentative avec un carte de classe 4 et 16 Go retourne un KERNEL PANIC lors du redémarrage sur la carte.
    Dommage, il va falloir que je trouve une autre solution.
    Merci tout de même.

    Répondre
    1. admin Auteur de l’article

      Bonjour Oliv
      Tous les clones réalisés ici fonctionnent. Cartes de taille différentes / cartes de classe différente… pas de souci
      Si une carte est récalcitrante, il faudrait essayer de la « remettre à zéro » avec l’outil de formatage SD : https://www.sdcard.org/downloads/formatter_4/ fourni par SD Association. C’est d’ailleurs également recommandé avant d’installer un système dessus.
      Cordialement
      François

      Répondre
      1. Oliv'

        Merci beaucoup,

        Effectivement, sous Windows 7, j’ai reformaté mes cartes SD avec Sdformatter, puis j’ai pu facilement faire une copie de l’image de ma carte système du Raspberry avec Win32Diskimager (logiciel gratuit).
        C’est pratique et 100 % efficace, mais j’aurai préféré réussir à le faire directement sur le Raspberry … tout semble fonctionner, malgré un p’tit message d’erreur de lecture de superblock qui ne bloque pas le process, mais une fois le clonage achevé, la carte ne fonctionne pas (je n’ai pas eu la patience de noter le message en question).

        Répondre
  7. anthony

    Bonjour,
    j’ai l’impression que ma carte destination (branchée avec un lecteur de carte) n’est pas reconnu sur mon raspberry car les périphériques porte le même nom (/DEV/mmcblk0).
    Comment je peux faire pour renommer ma carte destination en /dev/sdb par exemple ?
    Merci de votre aide.

    Répondre
    1. admin Auteur de l’article

      bonjour Anthony
      /dev/mmcblk0 est la carte d’origine (celle qui sert à démarrer le Raspberry Pi. C’est Linux qui détermine le nom des périphériques et il n’est pas possible de « renommer ». Si vous n’avez qu’une carte SD dans le lecteur vous devriez trouver /dev/sda. https://www.sdcard.org/downloads/formatter_4/ Pensez à reformater la carte destination avec cet utilitaire dans un premier temps. Regardez ce qui apparait dans dmesg quand vous insérez la carte destination dans le lecteur…
      Cordialement
      François

      Répondre
  8. Guillaume

    Bonjour et merci pour l’article sur le papier très intéressant ! Je dis sur le papier car j’ai essayé à plusieurs reprises et de façons différentes ce script, mais n’arrive décidément pas à faire fonctionner la carte SD de destination.
    J’essaye de copier mon installation XBian d’une carte de 16Go SanDisk Classe 4 vers une SanDisk 8Go Classe 10. (Le but est par la suite de faire un BerryBoot avec 2 systèmes sur la 16Go).
    Je lance donc le script qui reconnait très bien ma carte de destination, recréé une table à l’identique mais j’obtiens une vingtaine de message d’erreur de rsync ;
    rsync: chown "/mnt/clone/boot" failed: Operation not permitted (1)
    J’execute le script en root.
    Le script se termine mais impossible de démarrer sur la nouvelle carte … Est-ce dû à ces messages d’erreur ?
    J’ai essayé de redimensionner la partition avec GParted mais j’obtiens un message d’erreur sur le BTRFS … (Pourtant compatible sur les dernières version du live CD).
    J’ai également testé avec les btrfs-tools mais ça ne redimensionne que la partition secondaire (vu sur GParted) et donc ne modifie pas la taille …
    Je ne sais plus quoi faire, je formate toujours mes cartes avec SDFormater. J’espère que quelqu’un pourra m’aider !
    Merci !

    Répondre
  9. Ping : rpi-clone: Clonez la carte SD de votre Raspberry Pi | Blog de F8ASB

  10. Nicolas

    Bonjour,
    merci pour le partage d’info sur ce tuto.
    De mon coté j’ai un soucis dans l’utilisation de ce script:
    la copie sur la nouvelle carte sd se passe bien (pas de message d’erreur) mais ma raspberry ne boot pasavec la nouvelle carte.
    Des idées pour pouvoir investiguer de mon cote? merci.

    ma config:
    Raspberry B.
    kernel: Linux rapsberrypi 3.12.22+ #691
    carte SD sanDisk 8GB clonée vers une HC 8GB

    messages d’erreur du boot:
    VFS: Cannot root device « mmcbclk0p6 » or uncknownblock
    b300 767628 mmclk0 driver: mmcbclk
    b301 1501763 mmcbclk0p1
    b302 6169600 mmcbclk0p2

    Répondre
  11. Ping : Carnet de notes : Quelques paramètres de configuration de la Raspberry PI | Okimi

  12. Cmauki

    Bonjour,
    Merci pour ces précieuses informations mais pour moi : ça ne fonctionne pas.
    J’ai une carte SD 8Gb Kingston sur laquelle est installée mon système et je cherche à la cloner sur une SD 8Gb Sandisk. Une chance sur deux…j’ai tiré la mauvaise carte !

    J’ai donc continué la procédure décrite mais la procédure s’arrête, faute de présence du système de fichier sad2.

    J’ai copié ci dessous le message d’erreur :
    ============================================================================

    e2label: Aucun fichier ou dossier de ce type lors de la tentative d’ouverture de /dev/sda2
    Impossible de trouver un superbloc de système de fichiers valide.

    Clone destination disk : sda
    Clone destination rootfs : /dev/sda2 (no label) on /mnt/clone
    Clone destination bootfs : /dev/sda1 on /mnt/clone/boot
    Verbose mode : off
    ===============================
    Final check, is it Ok to proceed with the clone (yes/no)?: yes
    => Mounting /dev/sda2 (no label) on /mnt/clone
    mount: special device /dev/sda2 does not exist
    Mount failure of /dev/sda2, aborting!
    ===================================================================================
    Raspberry pi model B+

    je débute, soyez indulgents !…
    Quelqu’un pourrait-il m’aider ?

    Répondre
    1. julien quiévreux

      Est-ce la carte micro sd est bien partitionné et donc la partition sda2 est bien présente?
      Si pas, pour y remédier, vous pouvez ajouter l’option -f à rpi-clone pour que celui-ci formate la partition de destination. Attention à bien indiquer la bonne destination ou à faire une sauvegarde manuel du système d’origine si vous avez des doutes.

      Répondre
  13. Paul

    Bonjour

    désolé mais cela ne marche pas pour moi

    en entrée : carte Noobs 8Go avec raspbian installé
    en sortie : carte 16Go neuve
    tout semble fonctionner correctement, et je teste le résultat :
    je mets la nouvelle carte à la place de l’ancienne dans le RPi, … rien ne démarre

    après avoir redémarré avec l’ancienne carte, je compare rapidement le contenu des deux cartes :
    /bin /etc /home /lib ===> OK
    /boot /dev =====> vides !!!???

    effectivement, c’est normal que ça ne démarre pas.

    que faire ?

    Répondre
  14. Jean-Pierre

    Après installation de Raspbian, Domoticz et Heyu sur une SD 16 Go classe 10 avec une Raspi2, je viens d’utiliser RPI-clone en français en suivant à la lettre ce tuto.
    La SD de destination est une 8 Go classe 10 qui boote sans aucun problème ma Raspi2.
    Je n’ai pas donné de nom au système de fichiers racine de destination.
    Tout s’est déroulé exactement comme décrit, un rêve par rapport à de nombreuses autres publications moins rigoureuses.
    Bravo et un grand merci.

    Répondre
  15. Ping : Raspe | Pearltrees

  16. bil

    Bonsoir
    Dommage.Cela fait plusieurs années que j’essaie de faire quelque chose de pas mal avec un ras Perry.J’aurais bien voulu commercialiser l’image de la carte si mais la protéger contre la copie.Je crois entendre les hou hui un des pro open source.Mais croyez moi des heures devant l’écran,j’en ai passé. J’aurai bien voulu tirer quelque profit de tout cela.Bonne fin de journée a tous

    Répondre
  17. matric

    Bonsoir,

    Après bien des interrogations suivies de tentatives pour faire une copie de la carte SD de 16Go, repartitionnée de 16 en 8Go, sur une carte de 8Go j’ai suivi le tuto ci-dessus qui propose l’usage de rpi-clone.
    La méthode est sans appel, le résultat est au rendez-vous.
    J’avais cru initialement que win32diskimager serait la solution, que neni, car celui-ci veut copier l’intégralité de la carte, 16Go en l’occurrence ici, même si seulement 8Go utiles.

    Merci pour cette aide qui m’a redonné le sourire !
    Cordialement

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

      Merci pour ce retour Didier
      ça fait plaisir d’avoir des retours positifs
      car en général les commentaires arrivent quand ça ne fonctionne pas 😛
      Bonne année 2016
      Cordialement
      François

      Répondre
          1. Manu

            Bonjour,

            En utilisant la commande « yes », on peut automatiser rpi-clone avec une tache cron (en utilisateur root), mais il faut savoir *exactement* ce que l’on fait sous peine de perdre les données d’un disque.
            ATTENTION: les lignes suivantes s’appliquent uniquement à une carte SD de clonage dans un lecteur usb énuméré sur /dev/sda:
            sudo crontab -e
            ajouter la ligne suivante avec l’éditeur de cron:
            0 4 * * * yes | sudo rpi-clone sda
            De cette manière, on clone le boot et le root filesystem de la pi sur /dev/sda tous les jours à 4h du matin.

            NB: rpi-clone ne fonctionne pas avec NOOBS.

            Répondre
  18. Squale76

    Bonjour,
    J’aimerais utilisé ce script qui est très bien mais sur des clé USB. J’ai suivi ce tuto (https://www.framboise314.fr/booter-le-raspberry-pi-sur-un-disque-dur-usb/) pour déplacer mon root file system sur une clé USB. Ce qui fonctionne très bien.
    Je développe des scripts sur mon RPi et je voudrais garder une clé USB de « Recette » et une « Opérationnelle » et pouvoir, une fois validé ma recette, copier l’intégralité de ma clé de recette sur ma clé opérationnelle.
    Que dois-je changer dans le script pour qu’il copie la clé USB sur laquelle il a booté vers l’autre ?
    Cette copie doit se faire RPi en fonctionnement car l’arrêt du RPi n’est pas possible, les données sont collectées en permanence.

    Répondre
    1. Manu

      Il faut savoir quelle est la destination du clone du root filesystem. Par exemple quand tu tapes :
      sudo rpi-clone sda
      tu dis au script rpi-clone de faire une image sur /dev/sda.
      A confirmer, mais ça doit être à peu près ça, si tu as une deuxième clé usb qui est sur /dev/sdb, il faut lancer le script avec la commande :
      sudo rpi-clone sdb
      (Pour savoir l’affectation, des volumes de stockages branchés, tapes :
      ls -l /dev/disk/by-label/
      tu auras les partitions et leur label dans l’arborescence /dev).
      Lance rpi-clone avec le sdX de ta clé opérationnelle.

      Répondre
      1. Squale76

        Pour la destination, je comprends que c’est lié à l’argument ‘sdX’ associé au script rpi-clone.sh mais je ne comprends pas comment le script sait quelle partition il doit prendre pour source.

        Répondre
  19. Manu

    Le script considère par défaut que le système est sur la carte SD qui est sur /dev/mmcblk0. Il assume qu’il y a une partition fat pour le boot (environ 60Mo) sur /dev/mmcblk0p1 et le / qui est sur mmcblk0p2.
    Pour lui faire comprendre que les partititions sont sur une clé USB (sur /dev/sdY) et non pas sur la carte SD, il faut remplacer dans le script /dev/mmcblk0 par /dev/sdY.
    Il faut voir que le script est initialement prévu pour cloner une carte SD de secours afin de redémarrer sur le clone en cas de problème sur l’original. Le fait d’utiliser le / sur une clé USB sort un peu de ce cadre, mais il doit y avoir moyen de le faire fonctionner avec un peu de persévérence…

    Répondre
  20. Richard

    Bonjour,

    Je voudrait savoir si on peut utiliser rpi-clone mais avoir comme destination un Nas synology (en nfs par exemple) eu lieu d’une autre carte SD.

    merci à vous

    Répondre
  21. thierry

    bonjour,
    Un petit retour sur un clone d’une microsd avec ubuntu mate dessus. Le script shell de Bill Wilson n’a pas fonctionner a 2 reprise, alors j’ai tanter le clonage manuel de Matt Hoskins qui a tres bien fonctionner.

    thierry

    Répondre
    1. thierry

      ma conclusion a ete trop rapide 🙁 j’ai un probleme montage usb en user que n’est pas en root, je m’explique en mode desktop user les periferie usb ne monte pas message « l’emplacement n’est pas un dossier  » en mode desktop root elle monte parfaitement . dommage ….

      Répondre
    2. thierry

      re tentative du script shell de Bill Wilson en m’appliquant ce coup ci , sd neuve kingston 16gb class10 , tous eteint navigateur compris ca a marcher impect , super !! ca me reboost merci pour t’es articles interessant

      thierry

      Répondre
  22. John

    Bonjour,

    Question peut être un peu bête mais ne serait il pas utile d’ajouter une commande pour arrêter tous les daemon pendant la copie avant de les relancer après ? Ou une commande qui permette de les mettre sur « pause ». Ca serait plus propre, non ?
    Ceci dit je ne saurais pas comment ajouter cette commande.

    John

    Répondre
  23. Rapouf

    Bonjour ,
    Svp ADMIN si je diminue la taille d’une partition avec Gparted ensuite je sauvgarde image avec WIN32diskimager sa peut marché ? , effectivement j’ai besoin juste de qlq Mo pour coloné une carte Sd 16Go vers une autre 16Go 🙁

    Répondre
  24. Barberot

    Bonjour à tous,
    Est il possible d’adapter le script pour cloner la carte sd sur un disque dur usb …ET qu’il soit utilisable comme disque de boot ?
    ps: j’ai essayé de le réaliser en suivant le tuto « Pitié pour la carte SD de votre framboise314 : Bootez sur un disque dur USB » et d’autres, pour transferer volumio ou osmc , sur un raspi 3 …. et deux mains gauche en linux !

    Merci d’avance

    Répondre
  25. Gilles

    Bonjour,
    Merci pour vos excellents articles.
    J’ai suivi un de vos tutos pour démarrer sur SSD. Cela fonctionne a merveille.
    Par contre, maintenant, si j’utilise RPI-clone, la carte générée ne fonctionne pas.
    L’idéal serait de pouvoir, après démarrage, insérer une sd dans le slot du RPI3, et de cloner avec les modifications nécessaire pour que cette carte boot. (Je suppose que dans mon test, j’aurais du modifier certains fichiers comme cmdline.txt ou autres, mais je ne suis pas assez calé…).
    Ou alors insérer une carte dans un lecteur et cloner avec les modifs permettant à la carte de booter si insérée dans le slot du rpi3.
    Merci de votre aide.
    Cordialement.
    Gilles

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

      Bonjour Gilles
      si je comprends bien
      vous avez modifié le PI3 pour qu’il démarre sur le SSD
      donc sans carte SD ?
      rpi-clone est fait pour cloner une carte SD, pas un SSD

      si vous souhaitez à nouveau booter sur une carte SSD, faites en une nouvelle à partir d’une image de Raspbian ça devrait fonctionner
      cordialement
      François

      Répondre
      1. Gilles

        Bonjour François,
        En fait j’essaie de trouver un moyen d’effectuer une image a chaud de mon système (la plus petite possible)que je pourrais réinstallée le cas échéant. Je suis débutant sous linux.
        Mon installation est basée sur un Raspberry PI3 avec un WD PIDrive de 64Go sur lequel est installé Jeedom pour gérer ma domotique.
        Cordialement
        Gilles

        Répondre
  26. Lloyd

    Bonjour tout le monde,
    merci la framboise pour le boulot que je suis dans l’anonymat depuis un certain temps.
    Tout se passait bien jusque là, mais là, pour le rpi-clone, je sèche.

    J’ai un RPi 3, que je souhaite copier vers un RPi1.
    Sur mon RPI3, j’ai une carte de 16Go, que je souhaite copier vers une micro SD de 8 Go via un adaptateur.
    Je lance un apt-get update/dist-upgrade pour avoir la dernière version.
    Je lance la commande sudo rpi-clone sda -f
    Tout se passe bien ; juste un message qui me dit qu’une partition est monté sur sda, est-ce que je veux la demontée, je dis oui.

    « A destination partition is busy (mounted). Mount status:
    /dev/sda2:
    /dev/sda1: /media/5EAE-8E26
    Do you want to unmount /media/5EAE-8E26? (yes/no): y »

    Ensuite ça continue à priori normalement. puis au moment de la copie j’ai ces messages là:

    « Starting the filesystem rsync to sda
    (This may take several minutes)…rsync: chown « /mnt/clone/boot » failed: Operation not permitted (1)
    rsync: readlink_stat(« /mnt/clone/boot/overlays ») failed: Input/output error (5)
    rsync: delete_file: unlink(boot/FSCK0079.REC) failed: Read-only file system (30)
    rsync: chown « /mnt/clone/boot/LICENCE.broadcom » failed: Read-only file system (30)
    rsync: mkstemp « /mnt/clone/boot/.cmdline.txt.50M4c4″ failed: Read-only file system (30)

     »

    Avec les 3 dernières lignes qui se répètent pour un grand nombre de fichiers présents.
    Donc autant dire que quand je veux lancer mon RPi 1, rien ne se passe.
    J’ai beau chercher sur le net, je ne trouve pas de cas semblable.

    Est-ce que quelqu’un aurait rencontré, et surtout, résolu ce problème?

    D’avance merci

    Répondre
  27. Alacran

    Bonjour tout le monde,
    merci la framboise pour le boulot que je suis dans l’anonymat depuis un certain temps.
    Tout se passait bien jusque là, mais là, pour le rpi-clone, je sèche.

    J’ai un RPi 3, que je souhaite copier vers un RPi1.
    Sur mon RPI3, j’ai une carte de 16Go, que je souhaite copier vers une micro SD de 8 Go via un adaptateur.
    Je lance un apt-get update/dist-upgrade pour avoir la dernière version.
    Je lance la commande sudo rpi-clone sda -f
    Tout se passe bien ; juste un message qui me dit qu’une partition est monté sur sda, est-ce que je veux la demontée, je dis oui.

    « A destination partition is busy (mounted). Mount status:
    /dev/sda2:
    /dev/sda1: /media/5EAE-8E26
    Do you want to unmount /media/5EAE-8E26? (yes/no): y »

    Ensuite ça continue à priori normalement. puis au moment de la copie j’ai ces messages là:

    « Starting the filesystem rsync to sda
    (This may take several minutes)…rsync: chown « /mnt/clone/boot » failed: Operation not permitted (1)
    rsync: readlink_stat(« /mnt/clone/boot/overlays ») failed: Input/output error (5)
    rsync: delete_file: unlink(boot/FSCK0079.REC) failed: Read-only file system (30)
    rsync: chown « /mnt/clone/boot/LICENCE.broadcom » failed: Read-only file system (30)
    rsync: mkstemp « /mnt/clone/boot/.cmdline.txt.50M4c4″ failed: Read-only file system (30)

     »

    Avec les 3 dernières lignes qui se répètent pour un grand nombre de fichiers présents.
    Donc autant dire que quand je veux lancer mon RPi 1, rien ne se passe.
    J’ai beau chercher sur le net, je ne trouve pas de cas semblable.

    Est-ce que quelqu’un aurait rencontré, et surtout, résolu ce problème?

    D’avance merci

    Répondre
  28. Naoli

    Bonjour et merci pour ce tuto rpi-clone !
    J’ai tenté sur une carte SD 16Go, avec l’option -f car elle avait déjà été utilisée une fois pour copier de la donnée.
    Et ça fait désormais 7 heures que j’ai « Running fsck on /dev/sdd1 » (sdd1 étant la partition de destination sur la carte SD de backup).

    Est-ce normal qu’après autant de temps il soit toujours dessus ? Est-ce que ça a planté ? Comment faire ?

    Merci, à très vite.

    Répondre
    1. Guillaume

      Étant donné que le script clone les partitions avec, je te suggère de faire avec -f, et en mettant comme destination /dev/sdd (pas /dev/sdd1 (je ne sais pas ce que tu as mis)).

      Mais 7H c’est effectivement un crash ^^

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

        c’est vu, j’ai installé Crayon syntax Highlighter pour l’auteur de l’article sur Kalliopé et je pense que c’est ce plugin qui a mis le bazar
        je vois comment je peux faire 🙁
        merci encore

        Répondre
  29. Bernard

    Bonjour
    Merci pour cet excellent article.
    Merci également pour tous les commentaires qui le complètent.
    Mais je crois qu’il y a aujourd’hui une manière plus simple de procéder, lorsque l’on est sous Raspbian, c’est l’utilitaire CD Card Copier, qui est depuis peu, inclus dans Raspbian
    (https://www.raspberrypi.org/blog/another-update-raspbian/).
    Je viens de l’essayer et j’ai l’impression que tout a bien fonctionné…
    A suivre…
    Cordialement,
    Bernard

    Répondre
    1. Dp300

      Bonjour,
      En effet SD card copier est inclus depuis Avril 2017. Je viens de l’essayer pour cloner la SD : ça fonctionne. J’ai pu passer d’une SD 16Go vers un SSD externe de 64Go connecté en USB. Avec les instructions qui vont bien, le Pi boot directement sur le SSD et tout fonctionne parfaitement.

      Répondre
  30. pierre

    Bonjour
    merci pour ces informations et effectivement super solution.
    Mais, je copie ma carte SD sur un disque pour booter sur le disque et non plus sur la sd.
    ça marche, mais comment empêcher que la copie utilise toute l’espace du disque et non pas la partition que j’ai prévu ?

    en effet, comme j’ai fait une copie des partitions sur mon Nas tous les jours, j’ai une heure pour 8Go. pas question d’avoir 10H de sauvegarde pour rien.

    Répondre
  31. Ping : openHABian, une distribution domotique pour Raspberry Pi – Computences

  32. gerald gagneur

    Bonjour,
    Existe t il un moyen de cloner la carte SD avec rasbian bit à bit sur une clé usb par exemple et ce depuis windows10.
    J’ai essayé wind32 disk imager.1, mais cela ne fonctionne pas .
    J’ai 4 fichiers « kernel.img » sur ma carte ?? pourtant la carte a bien été formaté avant d’installer rasbian et maggic mirror…
    Dans l’attente de votre réponse.
    Cdl.

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

      Bonjour
      win32diskimager fait une copie bit à bit
      quand vous dites 4 fichiers kernel ce sont :
      kernel.img kernel7.img kernel7l.img et kernel8.img ?
      ce sont des fichiers différents avec des tailles différentes
      ces noyaux correspondent aux différents processeurs qui se sont succédé sur les raspi (pi1, pi Zero, pi 3 et pi4) ne vous en étonnez pas…
      le but c’est quoi? de booter sur la clé USB?
      cordialement
      François

      Répondre
  33. gerald gagneur

    merci pour votre réponse rapide.
    effectivement pour le .img sont bien les kernel que vous évoqué.
    j ai enfin trouvé un logiciel pratique :
    usb image tool.
    j ai pu faire une copie bit à bit de ma carte sd ..ouff.
    ma carte est copié avec succes et j ai pu redemarrer avec la meme config!!
    je suis content.
    oui pourquoi pas booter sur cle usb vue la durée de vie de la carte sd.
    je voulais surtout un backup.
    merci encore.

    Répondre
  34. FRANK

    Salut,

    J’avais utilisé rpi clone pour passer de la sd a un ssd et booté dessus, nickel.

    Je viens de refaire la manip pour cloner mon ssd sur un autre ssd de sauvegarde, ca semble s’etre bien passé, pas de message d’erreur.

    Mais quand j’enleve mon ssd et le remplace par le cloné, le rpi ne démarre pas.

    D’où peut venir le problème ?

    Merci.

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

      Bonjour Franck
      c’est difficile à dire à distance
      il faut chercher, ouvrir le SSD cloné et regarder si les partitions sont correctes, les fichiers bien copiés etc…
      cdt
      françois

      Répondre
  35. Ping : Dupliquez la carte SD de votre Raspberry Pi avec rpi-clone - Framboise 314, le Raspberry Pi à la sauce française....

  36. Matthias

    Bonjour,

    Mon pi3b+ tourne sur un SSD que je cherche à copier sur une carte SD plus petite.
    J’ai donc branché un lecteur de carte en plus du SSD.
    La carte SD a été formatée mais quand je demande le clonage, j’ai l’impression qu’il cherche à cloner cette carte vierge sur mon SSD. Comment en être sûr ? Merci d’avance.

    Répondre
  37. Ping : Ordinateurs Solidaires – Le Maillet de Joigny

  38. Ping : RPi-clone – ou comment faire face à des cartes SD foireuses – Bear or Beer

  39. Mangin-voirin

    Bonjour, super post et programme!

    J’ai néanmoins une question je viens de lancer un nouveau clone de la micro SD de mon Raspberry

    et j’ai une alerte :

    pi@raspberrypi:~ $ sudo ./rpi-clone.sh sda -f

    *** Forçage des partitions sur la destination ‘sda’ ***
    Les partitions existantes sur le disque de destination ‘sda’ sont:
    Disk /dev/sda: 63865MB
    Partition Table: msdos
    Disk Flags:

    Number Start End Size Type File system Flags
    1 4,19MB 273MB 268MB primary fat32 lba
    2 273MB 31915MB 31642MB primary ext4

    Ce script peut initialiser la structure de partition du disque de destination
    en s’appuyant sur celle du système actuel et ensuite redmensionner
    la partition 2 (le système de fichiers racine) pour utiliser tout l’espace de la carte SD.
    Voulez vous initialiser la destination /dev/sda? (oui/non): o

    Copie de la structure des partitions, copie de 281 megaoctets…
    281+0 enregistrements lus
    281+0 enregistrements écrits
    294649856 octets (295 MB, 281 MiB) copiés, 18,5197 s, 15,9 MB/s
    Redimensionnement de la partition 2 (système de fichiers racine) pour utiliser tout l’espace de la carte SD…
    Value out of range.
    mke2fs 1.44.5 (15-Dec-2018)

    /dev/sda est initialisé et redimensionné. Ses partitions sont:
    Disk /dev/sda: 63865MB
    Partition Table: msdos
    Disk Flags:

    Number Start End Size Type File system Flags
    1 4,19MB 273MB 268MB primary fat32 lba
    2 273MB 31915MB 31642MB primary ext4

    Vous avez démarré /dev/mmcblk0p2 nom du système de fichiers racine actuel: rootfs
    Vous pouvez donner un nom au systèmes de fichiers racine destination /dev/sda2:

    Disque destination cloné : sda
    Systéme de fichiers racine destination cloné : /dev/sda2 (no label) on /mnt/clone
    Systéme de fichiers de démarrage cloné : /dev/sda1 on /mnt/clone/boot
    Mode bavard : off
    ===============================
    Dernière vérification : Voulez vous vraiment lancer le clonage (oui/non)?: o
    => Montage de /dev/sda2 (no label) sur /mnt/clone
    => Montage de /dev/sda1 sur /mnt/clone/boot
    ===============================

    Début de la synchronisation du système de fichiers vers sda
    (Soyez patient, ça peut prendre plusieurs minutes)…rsync: readlink_stat(« /home/pi/thinclient_drives ») failed: Permission denied (13)
    IO error encountered — skipping file deletion
    rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1207) [sender=3.1.3]

    *** Clonage terminé sur /dev/sda ***
    Début: 13:54:55 Fin: 14:03:06

    Appuyez sur Entrée lorsque vous êtes prêt à démonter les partitions de /dev/sda…

     

     

     

    Est-ce normal? (je ne pense pas,… et commetn faire pour résoudre cette alerte?)

    Merci

    Répondre

Laisser un commentaire

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

Complétez ce captcha SVP *

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