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/loop1p1
y /dev/loop1p2
y 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/sdb1
y /dev/sdb2
.
Entonces mi tarea es muy básica:
Clone
/dev/sdb2
la partición del USB (o la ISO montada/dev/loop1p2
) en el espacio vacío/no asignado del disco duro.
Creo dd
que es el camino a seguir, como siempre es el caso.
if=
lado:
Aunque dd
acepta todo el disco ( /dev/sdb
) o las particiones ( /dev/sdb1
, /dev/sdb2
etc.) 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 dd
comando. Si uso el disco duro completo /dev/sda
como of
descriptor, 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/sdb2
o /dev/loop1p2
y 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/sdb2
o/dev/loop1p2
y lo uso comoof=
argumento?
Sí, 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/loop1p2
es 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 fsck
puede 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/loop1p2
es 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/sdx3
es 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/sdx3
puedes ejecutar dd of=/dev/sdx
conadecuadooffset ( obs=
, seek=
), en general cuidando de no escribir más allá del fragmento ( count=
). Engorroso, pero es totalmente posible clonarlo /dev/sdb2
en 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
dd
significa "destructor de datos"); - aunque pocas herramientas pueden trabajar con
/dev/sdx
y compensar, necesitas una partición/dev/sdx3
comoconvenientementeuse 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, perotúPuede 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
.