Raspberry Pi – Faire un backup de sa carte SD

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:

$ sudo fdisk -l
[sudo] password for nicolargo:
Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 têtes, 63 secteurs/piste, 38913 cylindres, total 625142448 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x000e3a56
Périphérique Amorce  Début        Fin      Blocs     Id  Système
/dev/sda1   *        2048   617170943   308584448   83  Linux
/dev/sda2       617172990   625141759     3984385    5  Étendue
/dev/sda5       617172992   625141759     3984384   82  partition d'échange Linux / Solaris
Disk /dev/sdb: 16.0 GB, 16012804096 bytes
64 têtes, 32 secteurs/piste, 15271 cylindres, total 31275008 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x00014d34
Périphérique Amorce  Début        Fin      Blocs     Id  Système
/dev/sdb1            8192      122879       57344    c  W95 FAT32 (LBA)
/dev/sdb2          122880    31275007    15576064   83  Linux

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:

sudo dd if=/dev/sdb | gzip -9 > ./raspberry-20130420-sdb.img.gz

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:

gunzip ./raspberry-20130420-sdb.img.gz | sudo dd of=/dev/sdb

---

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:

sudo dd if=/dev/sdb1 | gzip -9 > ./raspberry-20130420-sdb1.img.gz
sudo dd if=/dev/sdb2 | gzip -9 > ./raspberry-20130420-sdb2.img.gz

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

$ sudo fdisk /dev/sdb
Commande (m pour l'aide): p
Disk /dev/sdb: 16.0 GB, 16012804096 bytes
64 têtes, 32 secteurs/piste, 15271 cylindres, total 31275008 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x00014d34
Périphérique Amorce  Début        Fin      Blocs     Id  Système

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

Commande (m pour l'aide): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Numéro de partition (1-4, par défaut 1):
Utilisation de la valeur par défaut 1
Premier secteur (2048-31275007, par défaut 2048): 8192
Dernier secteur, +secteurs or +taille{K,M,G} (8192-31275007, par défaut 31275007): 122879
Commande (m pour l'aide): t
Partition sélectionnée 1
Code Hexa (taper L pour lister les codes): c
Type système de partition modifié de 1 à c (W95 FAT32 (LBA))

puis la seconde (sdb2):

Commande (m pour l'aide): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Numéro de partition (1-4, par défaut 2):
Utilisation de la valeur par défaut 2
Premier secteur (2048-31275007, par défaut 2048): 122880
Dernier secteur, +secteurs or +taille{K,M,G} (122880-31275007, par défaut 31275007):
Commande (m pour l'aide): p
Disk /dev/sdb: 16.0 GB, 16012804096 bytes
64 têtes, 32 secteurs/piste, 15271 cylindres, total 31275008 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x00014d34
Périphérique Amorce  Début        Fin      Blocs     Id  Système
/dev/sdb1   *        8192      122879       57344    c  W95 FAT32 (LBA)
/dev/sdb2          122880    31275007     15576064  83  Linux

On valide les partitions:

Commande (m pour l'aide): w
Synchronisation des disques.

Ensuite on restaure les images:

gunzip ./raspberry-20130420-sdb1.img.gz | sudo dd of=/dev/sdb1
gunzip ./raspberry-20130420-sdb2.img.gz | sudo dd of=/dev/sdb2

Et voilà le travail !

Cet article Raspberry Pi – Faire un backup de sa carte SD est apparu en premier sur Le blog de NicoLargo.

Vus : 1753
Publié par Nicolargo : 402