Trabajando en Linux y OS X (10.10.5), estoy usando la herramienta de línea de comandos dd para copiar el contenido de una unidad flash USB desde y hacia un archivo comprimido. Para crear el archivo, uso lo siguiente en una unidad desmontada (en Linux, el formato es algo así como /dev/sdb
; en OS X es algo así como /dev/disk2
):
sudo dd if=/dev/disk1 bs=1m | gzip -c > disk.image.gz
que copia todo el contenido del disco, lo comprime y luego lo escribe en disk.image.gz
. Para desempaquetar la imagen en una nueva unidad, uso:
cat disk.image.gz | gunzip -c | sudo dd of=/dev/disk1 bs=1m
que toma la imagen del disco comprimido, la descomprime y luego la escribe en la unidad. (Puede verificar el progreso de cualquiera de los comandos ejecutando lo siguiente en una ventana separada en Linux:
sudo killall -USR1 dd
o en OS X:
sudo killall -INFO dd
que en ambos casos señala a dd
para generar un par de líneas sobre la cantidad de datos transferidos.)
Ambos procesos funcionan bien en Linux. Sin embargo, aunque la lectura y la compresión funcionan bien en OS X, la descompresión y la escritura nunca terminan. dd
sigue escribiendo datos y más datos, incluso aunque el archivo de origen (descomprimido) haya finalizado y la unidad de disco esté llena. Si espero hasta que se escriban más datos de los que deberían caber en la unidad flash, y luego ^C
para finalizar el comando, la unidad resultante parece montarse y funcionar bien. Pero, me preocupa que el comportamiento no sea lo que espero.
¿Alguna idea de por qué dd
la escritura nunca termina, a pesar de que ya no está recibiendo datos?
(BTW: si está utilizando esto como instrucciones para grabar sus propias unidades de disco, ASEGÚRESE tiene los identificadores de dispositivo correctos (por ejemplo, el /dev/sdb
o /dev/disk2
mencionado anteriormente). dd
hace exactamente lo que usted le dice que haga, así que si obtiene el identificador incorrecto y le dice que sobrescriba su unidad de arranque, con mucho gusto lo hará. Busque en otra parte cómo determinar el dispositivo correcto.)