dd para copiar solo una partición de la iso a una parte no asignada del disco duro

dd para copiar solo una partición de la iso a una parte no asignada del disco duro

Mi pregunta es más genérica en el contexto de dd/harddisk/iso-images. A continuación se detallan los detalles.

Tengo una imagen iso en vivo que contiene dos particiones montadas como /dev/loop1p1y /dev/loop1p2y tengo un disco duro con mucho espacio vacío no asignado al final. Además, tengo una unidad USB conectada (con la misma imagen escrita) y el contenido está disponible en /dev/sdb1y /dev/sdb2.

Entonces mi tarea es muy básica:

Clone /dev/sdb2la partición del USB (o la ISO montada /dev/loop1p2) en el espacio vacío/no asignado del disco duro.

Creo ddque es el camino a seguir, como siempre es el caso.

if=lado:

Aunque ddacepta todo el disco ( /dev/sdb) o las particiones ( /dev/sdb1, /dev/sdb2etc.) como primer argumento if=, el argumento restante of=del HDD ( /dev/sda) debe ser homogéneo y parece ser el lado decisivo.

of=lado:

Todavía no tengo ninguna partición creada en el lado del disco duro para pasarla al of=argumento del ddcomando. Si uso el disco duro completo /dev/sdacomo ofdescriptor, las particiones existentes en el disco duro se perderán, lo que definitivamente no es deseable.

Entonces para reiterar la pregunta:

¿Cómo clono la unidad USB específica al disco duro?

Aparte, ¿será de alguna ayuda si creo de alguna manera una partición nueva y vacía en el disco duro con dimensiones "exactas" a las de /dev/sdb2o /dev/loop1p2y lo uso como of=argumento?

Respuesta1

¿Será de alguna ayuda si creo de alguna manera una partición nueva y vacía en el disco duro con dimensiones "exactas" a las de /dev/sdb2o /dev/loop1p2y lo uso como of=argumento?

, y esta es probablemente la forma más sencilla. El tamaño no tiene que ser exactamente igual, puede ser más grande. Estrictamente hablando, tiene que ser al menos tan grande como el sistema de archivos que contiene /dev/loop1p2, lo cualpuedeser mucho más pequeño que /dev/loop1p2él mismo. La forma de obtener el tamaño exacto de un sistema de archivos determinado depende del sistema de archivos (diferentes herramientas para ext, btrfs, etc.). Sin embargo, tener un sistema de archivos mucho más pequeño que su partición es poco común, por lo que el tamaño /dev/loop1p2es razonable yseguromínimo.

Si la nueva partición es demasiado pequeña para el sistema de archivos, terminará con un clon del sistema de archivos en mal estado, posiblemente con algunos datos y/o metadatos faltantes. Una herramienta adecuada fsckpuede o no hacer que el clon esté formalmente sano, pero no recuperará ningún dato que no encaje. La pérdida de datos puede ocurrir independientemente de cuánto espacio libre tenga el sistema de archivos de origen.

Si la nueva partición es más grande, no pasará nada malo. Cualquiera que sea el sistema de archivos que contenga /dev/loop1p2, no debería importarle si la partición de destino es más grande. Sin embargo, crear una partición mucho más grande será una pérdida de espacio, a menos que planees ampliar el sistema de archivos para ocupar toda la partición después.

Entonces sí, el tamaño de /dev/loop1p2es probablemente el mejor para la nueva partición. Algunas herramientas pueden prestar atención a los tipos de partición, por lo tanto, debes configurar correctamente el ID de la nueva partición (es diferente paraTabla de particiones de DOS en MBRytabla de particiones GUID).

¿Puedes clonar sin crear una nueva partición? Sí, pero no vale la pena.

Un nodo de dispositivo como /dev/sdx3es solo una abstracción útil para acceder a un fragmento predefinido /dev/sdx(y nada fuera de este fragmento). Esto significa que en lugar de dd of=/dev/sdx3puedes ejecutar dd of=/dev/sdxconadecuadooffset ( obs=, seek=), en general cuidando de no escribir más allá del fragmento ( count=). Engorroso, pero es totalmente posible clonarlo /dev/sdb2en el espacio no asignado del disco duro de destino sin crear una partición allí. Pero:

  • cualquier error tipográfico o de cálculo puede resultar en la sobrescritura de una parte del disco duro de destino que no desea tocar (y entonces sabrá que ddsignifica "destructor de datos");
  • aunque pocas herramientas pueden trabajar con /dev/sdxy compensar, necesitas una partición /dev/sdx3comoconvenientementeuse el sistema de archivos clonado en la práctica, por lo que tarde o temprano lo creará de todos modos;
  • sin partición, el espacio ocupado por el clon se considera libre; ninguna herramienta sensata debería utilizarla por iniciativa propia, peroPuede olvidar el tamaño exacto del fragmento ocupado o incluso el hecho de que esté ocupado.

Por estas razones, crear una partición antes de la clonación es lo correcto. Una vez que lo tienes, of=es la forma correcta de señalarlo dd.

información relacionada