Clonación de tarjeta SD usando el comando dd

49

Estoy tratando de clonar una tarjeta SD que puede contener varias particiones, algunas de las cuales Ubuntu no puede reconocer. En general, quiero clonar todo el volumen, no solo una partición. Entonces, monte la tarjeta SD y veo algo como esto en el visor de registros:

kernel: [  262.025221]  sdc: sdc1 sdc2

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

Como quiero copiar todo el disco, ejecuto:

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

Se crea el archivo sdimage.img, 7,9 GB (7,944,011,776 bytes) (la tarjeta SD es de 8 GB). Ahora monto otra tarjeta SD y ejecuto:

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

El problema es que el segundo comando dd se cuelga en alguna etapa y nunca tiene éxito. Después de esto, no puedo reiniciar o apagar la computadora, y solo necesito apagarla.

¿Es este el enfoque correcto? ¿Quizás haya otra forma de clonar una tarjeta SD?

Sistema operativo: Ubuntu 12.04 (Precise Pangolin), 32 bit.

Alex F
fuente
¿Se puede montar el archivo img creado y ver si se creó correctamente?
Milan Todorovic
@MilanTodorovic: ¿cómo puedo hacer esto?
Alex F
Si no recuerdo mal: mount -o loop sdimage.img / path / to / mount. Luego verifique si puede examinar el archivo img correctamente.
Milan Todorovic
@MilanTodorovic: Intenté sudo mount -o sdimage.img / dev / mydisk y obtuve: mount: no puedo encontrar / dev / mydisk en / etc / fstab o / etc / mtab Posiblemente necesito crear alguna entrada de desarrollo antes. ¿Puedes publicar esto como respuesta con algunos detalles? Gracias.
Alex F
1
no deberías usar dd en dispositivos montados. desmonte todas las particiones primero, luego su comando debería funcionar.
ubfan1

Respuestas:

30

No debe usar dd en dispositivos montados. desmonte todas las particiones primero, luego su comando debería funcionar.

ubfan1
fuente
2
¿Por qué es lo contrario para mí? Tengo Ubuntu 12.10 y el comando solo funciona con particiones montadas ...
Luca Davanzo
1
@Velthune ¿Estás seguro de eso? Si es así, te sugiero que hagas tu propia pregunta.
Vreality
26

Inserte la tarjeta SD original y verifique el nombre del dispositivo (generalmente mmcblkXo sdcX):

sudo fdisk -l

Es posible que vea:

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

En mi caso, la tarjeta SD es /dev/mmcblk0(las *p1y *p2son las particiones).

Ahora tienes que desmontar el dispositivo:

sudo umount /dev/mmcblk0

Ahora para crear una imagen del dispositivo:

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

Esto tomará un rato.

Una vez que haya terminado, inserte la tarjeta SD vacía. Si el dispositivo es diferente (USB u otro tipo de lector de tarjetas SD) verifique su nombre y asegúrese de desmontarlo:

sudo fdisk -l
sudo umount /dev/mmcblk0

Escribe la imagen en el dispositivo:

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

La operación de escritura es mucho más lenta que antes.

Alon Fleider
fuente
44
al copiar grandes cantidades de datos, debe establecer un tamaño de bloque mayor que el predeterminado, de lo contrario, tendrá que esperar mucho. sudo dd if=/dev/mmcblk0 of=~/sd-card-copy.img bs=4M
xaedes
13

Estoy usando la herramienta dd para clonar memorias USB con múltiples particiones, aquí está mi comando:

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

notrunc : no truncar el archivo de salida
noerror : continuar después de leer errores

tommyk
fuente
¿No requiere esto dos lectores de tarjetas SD?
Peter Mortensen
1
@PeterMortensen, sí, muchos de nosotros usamos esos adaptadores de tipo 4 en 1.
Teque5
9

dd está bien, pero prefiero cat /dev/sdc/ > ~/backup.iso Si quieres volver a ponerlo en una tarjeta SD, simplemente ejecutacat ~/backup.iso > /dev/sdc

Realidad
fuente
Ambas SD son de 8 GB. cat se puede usar para hacer una imagen SD, pero para hacer otra SD debería usar dd, ¿verdad?
Alex F
0

Estos son los pasos que me funcionaron en Ubuntu para restaurar el archivo de imagen ( ~/raspberrypi2.imgen mi caso) a una nueva tarjeta SD (inspirada en gran medida por la respuesta de Alon anterior):

  1. Inserte la tarjeta micro SD a través del lector de tarjetas.
  2. Abre la aplicación Discos.
  3. Formatee rápidamente la tarjeta completa (no una partición específica).
  4. Cerrar discos.
  5. Abrir terminal y ejecutar:

    sudo fdisk -l
    

Salida relevante (que mostró que no había particiones debido al formato rápido de toda la tarjeta):

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

Este paso lleva unos buenos minutos (incluso en USB3). Asegúrese de no interrumpirlo mediante ninguna operación que invoque el montaje (abrir las aplicaciones Archivos o Discos).

Gracias por las respuestas de todos.

BoazC
fuente