Clonage de carte SD à l'aide de la commande dd

49

J'essaie de cloner une carte SD pouvant contenir plusieurs partitions, dont certaines ne peuvent pas être reconnues par Ubuntu. Généralement, je veux cloner le volume entier, pas seulement une partition. Alors, je monte la carte SD et vois quelque chose comme ceci dans la visionneuse de journal:

kernel: [  262.025221]  sdc: sdc1 sdc2

alex@u120432:~$ ls /dev/sdc*
/dev/sdc  /dev/sdc1  /dev/sdc2

Depuis que je veux copier le disque entier, j'exécute:

dd if=/dev/sdc of=sdimage.img bs=4M

Le fichier sdimage.img, 7,9 Go (7 944 011 776 octets) est créé (la carte SD fait 8 Go). Maintenant, je monte une autre carte SD et exécute:

dd if=sdimage.img of=/dev/sdc bs=4M

Le problème est que la deuxième commande dd se bloque à un stade donné et ne réussit jamais. Après cela, je ne peux plus redémarrer ou éteindre l'ordinateur, il me suffit simplement de l'éteindre.

Est-ce la bonne approche? Peut-être qu'il existe un autre moyen de cloner une carte SD?

OS: Ubuntu 12.04 (Precise Pangolin), 32 bits.

Alex F
la source
Pouvez-vous monter le fichier img créé et voir s'il est créé correctement?
Milan Todorovic
@ MilanTodorovic - comment puis-je faire cela?
Alex F
Si je me souviens bien: mount -o loop sdimage.img / path / to / mount. Ensuite, vérifiez si vous pouvez parcourir le fichier img correctement.
Milan Todorovic
@MilanTodorovic: J'ai essayé sudo mount -o sdimage.img / dev / mydisk et obtenu: mount: impossible de trouver / dev / mydisk dans / etc / fstab ou / etc / mtab. Peut-être dois-je créer une entrée de dev avant. Pouvez-vous poster ceci comme réponse avec quelques détails? Merci.
Alex F
1
vous ne devriez pas utiliser dd sur des appareils montés. démontez toutes les partitions en premier, votre commande devrait alors fonctionner.
ubfan1

Réponses:

30

Vous ne devriez pas utiliser dd sur des appareils montés. démontez toutes les partitions en premier, votre commande devrait alors fonctionner.

ubfan1
la source
2
pourquoi est le contraire pour moi? J'ai Ubuntu 12.10 et la commande n'a fonctionné qu'avec les partitions montées ...
Luca Davanzo
1
@Velthune Êtes-vous sûr de cela? Si oui, je suggérerais de poser votre propre question.
Vreality
26

Insérez la carte SD d'origine et vérifiez le nom du périphérique (généralement mmcblkXou sdcX):

sudo fdisk -l

Vous pourriez voir:

Device         Boot   Start      End  Sectors  Size Id Type
/dev/mmcblk0p1 *       2048  2099199  2097152    1G  c W95 FAT32 (LBA)
/dev/mmcblk0p2      2099200 31116287 29017088 13.9G 83 Linux

Dans mon cas, la carte SD est /dev/mmcblk0(la *p1et *p2sont les partitions).

Maintenant, vous devez démonter l'appareil:

sudo umount /dev/mmcblk0

Maintenant, pour créer une image de l'appareil:

sudo dd if=/dev/mmcblk0 of=~/sd-card-copy.img

Cela va prendre du temps.

Une fois terminé, insérez la carte SD vide. Si le périphérique est différent (lecteur USB ou autre type de lecteur de carte SD), vérifiez son nom et veillez à le démonter:

sudo fdisk -l
sudo umount /dev/mmcblk0

Écrivez l'image sur l'appareil:

sudo dd if=~/sd-card-copy.img of=/dev/mmcblk0

L'écriture est beaucoup plus lente qu'avant.

Alon Fleider
la source
4
lors de la copie de grandes quantités de données, vous devez définir une taille de bloc supérieure à celle par défaut, sinon vous devrez peut-être attendre très longtemps. sudo dd if=/dev/mmcblk0 of=~/sd-card-copy.img bs=4M
xaedes
13

J'utilise dd tool pour cloner des clés usb avec plusieurs partitions, voici ma commande:

sudo dd if=/dev/sdb of=/dev/sdc bs=4096 conv=notrunc,noerror

notrunc - ne tronque pas le fichier de sortie
noerror - continue après les erreurs de lecture

Tommyk
la source
Cela ne nécessite-t-il pas deux lecteurs de carte SD?
Peter Mortensen
1
@ PeterMortensen Oui, beaucoup d’entre nous utilisons ces adaptateurs de type 4 en 1.
Teque5
9

dd va bien, mais je préfère cat /dev/sdc/ > ~/backup.iso Si vous voulez le mettre à nouveau sur une carte SD, lancez simplementcat ~/backup.iso > /dev/sdc

La réalité
la source
Les deux SD sont de 8 Go. cat peut être utilisé pour créer une image SD, mais pour créer un autre SD, je dois utiliser dd, non?
Alex F
0

Voici les étapes qui ont fonctionné pour moi sur Ubuntu pour restaurer le fichier image ( ~/raspberrypi2.imgdans mon cas) sur une nouvelle carte SD (inspirée en grande partie par la réponse d'Alon ci-dessus):

  1. Insérez la carte micro SD via le lecteur de carte.
  2. Ouvrez l'application Disks.
  3. Formatez rapidement l’ensemble de la carte (pas une partition spécifique).
  4. Fermer les disques.
  5. Ouvrez le terminal et exécutez:

    sudo fdisk -l
    

Sortie pertinente (qui montrait qu'il n'y avait pas de partitions en raison du formatage rapide de la carte entière):

Disk /dev/sdb: 7.4 GiB, 7948206080 bytes, 15523840 sectors 
Units: sectors of 1 * 512 = 512 bytes 
Sector size (logical/physical): 512 bytes / 512 bytes 
I/O size (minimum/optimal): 512 bytes / 512 bytes 
Disklabel type: dos 
Disk identifier: 0x6957f2f2

sudo dd if=~/raspberrypi2.img of=/dev/sdb

Cette étape prend quelques bonnes minutes (même sur USB3). Veillez à ne pas l'interrompre par une opération qui appelle le montage (en ouvrant les applications Fichiers ou Disques).

Merci pour les réponses de chacun.

BoazC
la source