web-dev-qa-db-fra.com

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

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: buntu 12.04 (Pangolin précis), 32 bits.

46
Alex F

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

27
ubfan1

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

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 (le *p1 et le *p2 sont 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.

21
Alon Fleider

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

14
tommyk

dd c'est bien, mais je préfère cat /dev/sdc/ > ~/backup.iso Si vous voulez le réutiliser sur une carte SD, lancez simplement cat ~/backup.iso > /dev/sdc

9
Vreality

Voici les étapes qui ont fonctionné pour moi sur Ubuntu pour restaurer le fichier image (~/raspberrypi2.img dans mon cas) sur une nouvelle carte SD (fortement inspirée 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 a montré 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). Assurez-vous de ne pas l'interrompre par une opération qui appelle le montage (ouvrir les applications Fichiers ou Disques).

Merci pour les réponses de chacun.

0
BoazC