Plan (hide)

  1.   1.  Sauvegarde sous Linux
  2.   2.  Restauration
    1.   2.1  Taille identique
    2.   2.2  Taille différente
  3.   3.  Cloner avec rpi-clone

Il est fréquent d'avoir des problèmes avec sa carte SD sur un raspberry pi. Sauvegarder le contenu de cette dernière peut être utile. D'autre part vous pouvez également avoir envie de cloner votre carte SD sur une autre carte plus adaptée en taille par exemple.

1.  Sauvegarde sous Linux

La méthode est très simple on va créer une image. Pour commencer il faut insérer la carte SD dans une machine sous Linux et vérifier le device correspondant.

 % sudo fdisk -l
 Disque /dev/mmcblk0 : 7,4 GiB, 7969177600 octets, 15564800 secteurs
 Unités : secteur de 1 × 512 = 512 octets
 Taille de secteur (logique / physique) : 512 octets / 512 octets
 taille d'E/S (minimale / optimale) : 512 octets / 512 octets
 Type d'étiquette de disque : dos
 Identifiant de disque : 0x00000000

 Périphérique   Amorçage Début      Fin Secteurs Taille Id Type
 /dev/mmcblk0p1              16   250047   250032 122,1M  b W95 FAT32
 /dev/mmcblk0p2          250048 15564799 15314752   7,3G 83 Linux

Il y a deux partitions dans cet exemple p1 et p2.

 % mkdir ~/Sauvegarde
 % sudo dd if=/dev/mmcblk0 of=~/Sauvegarde/Nas.img
 15564800+0 enregistrements lus
 15564800+0 enregistrements écrits
 7969177600 octets (8,0 GB) copiés, 224,085 s, 35,6 MB/s

2.  Restauration

Deux cas se présentent, la carte peut avoir la même taille ou une taille différente, il faut alors procéder différemment.

2.1  Taille identique

C'est la même carte SD ou elle a la même taille alors c'est pas compliqué. Vous insérez votre carte et vous copiez l'image sauvegardée dessus. Attention au device /dev/<lebondevice>.

 % sudo dd if=~/Sauvegarde/NAS.img of=/dev/mmcblk0

2.2  Taille différente

Dans un premier temps on procède de la même façon que précédemment. Vous insérez votre carte et vous copiez l'image sauvegardée dessus. Attention au device /dev/<lebondevice>.

 % sudo dd if=~/Sauvegarde/NAS.img of=/dev/mmcblk0

Vous avez maintenant une copie par exemple d'une carte de 8GB sur une carte de 16GB, cela fait de la place perdue. La solution consiste a retailler les partitions.

Pour l'exemple je n'avais de carte SD, j'ai donc utilisé une clef USB de 32GB pour illustrer. Le device n'est donc pas le même.

 % sudo dd if=~/Sauvegarde/Nas.img of=/dev/sdb
 15564800+0 enregistrements lus
 15564800+0 enregistrements écrits
 7969177600 octets (8,0 GB) copiés, 1264,77 s, 6,3 MB/s

On va maintenant éditer la table de partition et la modifier.

 % sudo fdisk /dev/sdb

 Bienvenue dans fdisk (util-linux 2.26.2).
 Les modifications resteront en mémoire jusqu'à écriture.
 Soyez prudent avant d'utiliser la commande d'écriture.


 Commande (m pour l'aide) : p
 Disque /dev/sdb : 29,3 GiB, 31466323968 octets, 61457664 secteurs
 Unités : secteur de 1 × 512 = 512 octets
 Taille de secteur (logique / physique) : 512 octets / 512 octets
 taille d'E/S (minimale / optimale) : 512 octets / 512 octets
 Type d'étiquette de disque : dos
 Identifiant de disque : 0x00000000

 Périphérique Amorçage Début      Fin Secteurs Taille Id Type
 /dev/sdb1                 16   250047   250032 122,1M  b W95 FAT32
 /dev/sdb2             250048 15564799 15314752   7,3G 83 Linux

On supprime la partition 2.

 Commande (m pour l'aide) : d
 Numéro de partition (1,2, 2 par défaut) : 2

 La partition 2 a été supprimée.

On crée une nouvelle partition primaire.

  Commande (m pour l'aide) : n
 Type de partition
    p   primaire (1 primaire, 0 étendue, 3 libre)
    e   étendue (conteneur pour partitions logiques)
 Sélectionnez (p par défaut) : p
 Numéro de partition (2-4, 2 par défaut) : 
 Premier secteur (250048-61457663, 251904 par défaut) : 250048
 Dernier secteur, +secteurs ou +taille{K,M,G,T,P} (251904-61457663, 61457663 par défaut) : 

 Une nouvelle partition 2 de type « Linux » et de taille 29,2 GiB a été créée.

 Commande (m pour l'aide) : w
 La table de partitions a été altérée.
 Appel d'ioctl() pour relire la table de partitions.
 Synchronisation des disques.

 % sudo fdisk /dev/sdb
 Bienvenue dans fdisk (util-linux 2.26.2).
 Les modifications resteront en mémoire jusqu'à écriture.
 Soyez prudent avant d'utiliser la commande d'écriture.


 Commande (m pour l'aide) : p
 Disque /dev/sdb : 29,3 GiB, 31466323968 octets, 61457664 secteurs
 Unités : secteur de 1 × 512 = 512 octets
 Taille de secteur (logique / physique) : 512 octets / 512 octets
 taille d'E/S (minimale / optimale) : 512 octets / 512 octets
 Type d'étiquette de disque : dos
 Identifiant de disque : 0x00000000

 Périphérique Amorçage Début      Fin Secteurs Taille Id Type
 /dev/sdb1                 16   250047   250032 122,1M  b W95 FAT32
 /dev/sdb2             251904 61457663 61205760  29,2G 83 Linux

 Commande (m pour l'aide) : q

La table de partition est correcte, il faut maintenant redimensionner le filesystem.

 % sudo e2fsck -f /dev/sdb2
 e2fsck 1.42.12 (29-Aug-2014)
 /dev/sdb2 : récupération du journal
 Passe 1 : vérification des i-noeuds, des blocs et des tailles
 Passe 2 : vérification de la structure des répertoires
 Passe 3 : vérification de la connectivité des répertoires
 Passe 4 : vérification des compteurs de référence
 Passe 5 : vérification de l'information du sommaire de groupe
 /dev/sdb2 : 24173/478608 fichiers (0.2% non contigüs), 308829/1914344 blocs
 % sudo resize2fs /dev/sdb2
 resize2fs 1.42.12 (29-Aug-2014)
 En train de redimensionner le système de fichiers sur /dev/sdb2 à 7650952 (4k) blocs.
 The filesystem on /dev/sdb2 is now 7650952 (4k) blocks long.

3.  Cloner avec rpi-clone