ANTECEDENTES
Se ha configurado una tarjeta SD para una Raspberry pi. El objetivo es replicar la tarjeta SD exactamente (SO, aplicaciones, datos) para que la réplica funcione en un rPi exactamente como la tarjeta SD maestra original.
ACTUALIZACIÓN:Asumir:
- la replicación se realizará en una computadora portátil configurada con un sistema operativo
similar a UNIX - la replicación no se realizará desde el rPi
- la tarjeta SD objetivo es de la misma marca/modelo
- la tarjeta SD de origen está dividida con diferentes sistemas de archivos:
Preguntas
Qué opciones de clonación de UNIX están disponibles para una computadora portátil Ubuntu HP con una ranura para tarjeta SD y un lector/escritor de tarjeta SD USB.
¿Hay alguna diferencia si la tarjeta USB SD RW es el lector o el escritor?
Un objetivo (restricción) es evitar comprar hardware adicional.
Observaciones de la solución
date; sudo sh -c 'cat sdcard.image >/dev/mmcblk0'; date
Lun 3 de junio 17:53:18 EDT 2019
[sudo] contraseña para el usuario:
Lun 3 de junio 23:42:17 EDT 2019
date; sudo sh -c 'pv sdcard.image >/dev/mmcblk0'; date
martes, 4 de junio a las 00:33:50 EDT de 2019
[sudo] contraseña para el usuario:
119GiB 6:06:12 [5,56 MiB/s] [================================>] 100%
Martes 4 de junio 06:43:05 EDT 2019
El análisis de gParted de la tarjeta SD flash muestra una partición idéntica:
Respuesta aceptada:
Los sistemas Unix hacen que los dispositivos de almacenamiento estén disponibles a través de un archivo de dispositivo. Los archivos de dispositivo se comportan como archivos ordinarios de muchas maneras. En particular, para hacer una copia exacta del dispositivo de almacenamiento, simplemente copie el contenido del dispositivo de origen en el dispositivo de destino.
Primero debe determinar el archivo del dispositivo de origen y el archivo del dispositivo de destino. El nombre depende de su variante de Unix y de cómo esté configurada, pero en la práctica, los archivos del dispositivo siempre están bajo /dev
directorio. Si tiene la tarjeta SD montada, puede encontrar el archivo del dispositivo con
df /media/sdcard1/some/file/on/the/sdcard
El archivo del dispositivo está en la primera columna. Otras herramientas pueden proporcionar la misma información, por ejemplo, mensajes de registro del kernel cuando inserta la tarjeta SD o el lsblk
comando en Linux.
Puede haber particiones en la tarjeta. Si es así, copie toda la tarjeta, incluso si hay una sola partición, ya que parte de la información del tiempo de arranque puede estar ubicada fuera de la partición. Por ejemplo, si df
muestra /dev/sdb1
en Linux, copie /dev/sdb
y no solo /dev/sdb1
.
Si extrae la tarjeta SD y la vuelve a insertar, normalmente tendrá el mismo nombre de archivo de dispositivo que antes, pero esto no está garantizado.
Antes de copiar, asegúrese de que:
- El dispositivo de origen no está montado o solo está montado como de solo lectura.
- El dispositivo de destino no está montado en absoluto.
- El dispositivo de destino es al menos tan grande como el de origen. En Linux,
lsblk
muestra el tamaño del dispositivo. - Tienes el dispositivo de destino correcto. ¡Tenga en cuenta que el siguiente comando sobrescribirá su contenido sin pedir confirmación!
Suponga que ha identificado que el dispositivo de origen es /dev/sdb
y el dispositivo objetivo es /dev/sdc
. Para copiar el contenido, ejecute el siguiente comando como root:
cat /dev/sdb >/dev/sdc
Si usa sudo, la redirección >
debe suceder como root, por lo que debe escribir algo como
sudo sh -c 'cat /dev/sdb >/dev/sdc'
Alternativamente, para asegurarse de no sobrescribir accidentalmente el dispositivo incorrecto, puede proceder en dos pasos:
- Proporcione al usuario (
gatorback
en mi ejemplo) permiso para leer desde el dispositivo fuente (dev/sdb
en mi ejemplo) y escribir en el dispositivo fuente (/dev/sdc
en mi ejemplo).sudo setfacl -m user:gatorback:r /dev/sdb sudo setfacl -m user:gatorback:w /dev/sdc
- Realiza la copia sin sudo.
cat /dev/sdb >/dev/sdc
Puede copiar la imagen del disco en un archivo y luego copiar el archivo de imagen en el dispositivo de destino. Esto es útil si necesita hacer varias copias, o si solo tiene un lector de tarjetas SD, o para reducir el riesgo de copiar en la dirección incorrecta.
sudo cat /dev/sdb >sdcard.image
- Extraiga la tarjeta de origen e inserte la tarjeta de destino.
- Opcionalmente, verifique el contenido montando la imagen, p.
sudo mount -o loop -r sdcard.image /mnt
. sudo sh -c 'cat sdcard.image >/dev/sdb'
Si desea ver la información de progreso convenientemente, use pv
en lugar de cat
(pv
rara vez se instala de forma predeterminada, pero está disponible como paquete en la mayoría de las distribuciones).