Raspberry Pi – Faire un backup de sa carte SD

Date: 22/04/2013 | Catégories: Open-source,Planet-libre,raspberry,Systeme | Tags: ,,

cartesdCe qu'il y a de bien avec un Raspberry Pi c'est que l'on peut passer d'un système à l'autre en changeant simplement de carte SD et en redémarrant la machine. On peut ainsi avoir une carte avec une distribution classique (Raspbian), une autre avec un média center (OpenELEC ou Raspbmc) ou encore une autre avec un desktop light (ArchLinux). L'idéal étant d'avoir à disposition autant de cartes SD que de systèmes (vu le prix des cartes, ce n'est pas un gros investissement).

Cependant, il est parfois utile, pour des tests ou pour économiser le nombre de ces cartes de sauvegarder puis de restaurer l'image disque sur une machine GNU/Linux classique. C'est ce que nous allons voir dans ce billet.

Sauvegarde intégral d'une carte SD

On commence par insérer la carte SD dans le lecteur du PC GNU/Linux sur lequel on veut faire la sauvegarde.

Pour identifier le périphérique correspondant à la carte SD à sauvegarder sur son système, il suffit de saisir la commande suivante et de regarder le device qui correspond à sa carte SD:

J'ai donc deux disques détectés sur ma machine:

  • /dev/sda (disque de 320 Go) qui est mon disque dur système sur mon PC portable. Ce n'est pas ce disque que l'on veut sauvegarder.
  • /dev/sdb (disque de 16 Go) qui est ma carte SD que je souhaite sauvegarder.

On lance la sauvegarde avec la commande suivante:

Restauration intégrale d'une carte SD

Après avoir inséré la clé USB sur laquelle on souhaite faire la restauration (attention la clé va être effacée), on commence par identifier l'identifiant du périphérique comme dans le paragraphe précédant (/dev/sdb dans mon cas).

Puis ensuite, il suffit de saisir la ligne de commande:

---

Nous allons ensuite voir comment sauvegarder les carte SD partition par partition, ce qui peut être utile si vous ne voulez que sauvegarder le système et pas une éventuelle partition de données.

Sauvegarde partition par patition d'une carte SD

Comme on peut le voir sur les deux dernières lignes de la commande fdisk du premier paragraphe , la carte SD (point de montage /dev/sdb dans mon cas) comporte deux partitions (mais il peut y en avoir plus selon la configuration de votre Raspberry Pi).

Il faut sauvegarder toutes les partitions:

Ces commandes peuvent prendre plus ou moins de temps selon la taille de votre carte SD. J'ai ainsi mis plus d'une dizaine de minute pour faire la sauvegarde de ma carte SD de 16 Go. On voit ici l'avantage de choisir la taille de ses cartes SD en fonction de ses besoins...

Restauration partition par patition d'une carte SD

Nous allons maintenant restaurer la carte préalablement sauvegardée. La procédure consiste à créer les partitions avec la commande fdisk puis ensuite à y écrire les images avec dd.

On part sur le principe ou la carte est vierge est sans partition (sinon utilisé la commande d pour chacune des partitions puis w pour valider):

On commence par créer le première partition (sdb1):

puis la seconde (sdb2):

On valide les partitions:

Ensuite on restaure les images:

Et voilà le travail !

  • jbfavre

    2 points:

    1. Il me semble qu’il y a confusion entre « point de montage » et « identifiant de périphérique ». En l’occurence, /dev/sdb me paraît plus tenir du second que du premier, non ?

    2. Tu suggères de sauvegarder chaque partitions séparément. Ceci oblige alors à recréer les partitions avant restauration. Quid d’une sauvegarde globale de la carte (donc dd if=/dev/sb of=sd-20130422.img) ? D’après moi, cette manière de faire présente l’intérêt de sauvegarder en même temps toutes les partitions, donc de pouvoir restaurer le tout en une seul commande, sans avoir besoin de se rappeler quelle était la taille de chacune des partitions.

    • Be Human

      Je vois que le poste date mais j’aimerais répondre à ton 2eme point. Tu suggères de faire un backup de la SD en une seul image *.img car c’est plus pratique à restaurer… c’est pas dit. Si ta une carte SD de 32GO mais que tes partitions ne font que 4GO au total, il est ridicule de créer une *.img aussi grosse. Surtout qu’au final tu iras plus vite à créer des images de chaques partitions séparer. Actuellement mon laptop mets 2 heures à créer une image de 32Go de ma sdcard alors que j’ai que 5 Go de données dans mes deux partoches. La methode de création d’images de partitions séparés ne me prends même pas 1 quart d’heure, pareille pour leurs restaurations. Le choix est vite fait, non?
      ++

  • TiJof

    Pourquoi ne pas backup directement toutes les partitions ?

    dd i=/dev/sdb (en plus on emmènera la table de partition)

    Un petit plus potentiel, la compression/décompression à la volée de l’image :
    Backup :
    dd if=/dev/sdb | gzip -9 > ~/Backup.img.gzip
    Restauration :

    gunzip ~/Backup.img.gzip | dd of=/dev/sda

  • @Titof / @jfavre: C’est vrai que le billet n’est pas très clair mais je souhaitais pouvoir faire une procédure partition par partition histoire de ne pas être obligé de sauver ma partition « data » mais juste le système. Je rajoute un chapitre pou une procédure « simple ».

  • Pingback: Raspberry Pi vrac | Pearltrees()

  • @nicolargo:disqus Oui ton raisonnement se tient si on veut restaurer que data, sinon pour la table des partitions il y a sfdisk

    # pour récupere la table des partitions
    $ sudo sfdisk -d /dev/sdb > partition-table.dump
    # pour la remettre
    $ sudo sfdisk /dev/sdb < partition-table.dump

  • DD

    Euh tout fonctionne, mais à la fin du tuto, j’essaye la carte sur le rpi, mais il ne redemarre pas !
    Il reste avec juste la led rouge allumée (power). On dirait qu’il manque le boot
    un idée ?

  • Pingback: Visto nel Web – 76 | Ok, panico()

  • Pingback: Sauvegarder la carte SD du Raspberry | Carnet()

  • Anthony

    Hello,

    Je me sers de ton tutoriel pour transférer mon installation d’OpenELEC d’une SD de 8 Go à une de 2 Go.

    J’ai réussi à sauvegarder les 2 partitions sur une clé USB grâce à tes indications mais n’arrive pas à restaurer ces 2 partitions sur la nouvelle SD depuis la clé USB.

    J’utilise : gunzip ./raspberry-1.img.gz | dd of=/dev/mmcblk0p1
    Cela a pour effet de décompresser l’archive .gz, mais la partition n’est pas restaurée.

    Le Pi renvoie alors :
    openelec:/var/media # gunzip ./raspberry-1.img.gz | dd of=/dev/mmcblk0p1
    0+0 records in
    0+0 records out
    0 bytes (0B) copied, 0.014303 seconds, 0B/s # L’opération est plus longue que cela

    Sais-tu pourquoi ?
    Merci par avance !

    PS : je suis un parfait néophyte sur Linux 🙂

  • Pingback: Raspberry | Pearltrees()

  • Pingback: Patrick LAURERI (boson06) | Pearltrees()

  • Pingback: Raspberry Pi | Pearltrees()

  • Pingback: Rasp | Pearltrees()

  • Pingback: Aldo San (yahan973) | Pearltrees()

  • Pingback: Raspe | Pearltrees()

  • Pingback: Raspberry Pi | Pearltrees()

  • Pingback: Sauvegarder et restauration d’une carte SD – Tycho.fr :: BlogNotes()