Raspberry Pi – Faire un backup de sa carte SD
Ce 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.