Funcionando tanto en Linux como en OS X (10.10.5), estoy utilizando la herramienta de línea de comandos dd para copiar el contenido de una memoria USB desde y hacia un archivo comprimido. Para crear el archivo, utilizo lo siguiente en una unidad sin montar (en Linux el formato es algo así como /dev/sdb
en OS X es algo como /dev/disk2
):
sudo dd if=/dev/disk1 bs=1m | gzip -c > disk.image.gz
que copia todo el contenido de la unidad, lo comprime y luego lo escribe en disk.image.gz
. Para descomprimir la imagen en una unidad nueva, utilizo:
cat disk.image.gz | gunzip -c | sudo dd of=/dev/disk1 bs=1m
que toma la imagen de disco comprimida, la descomprime y la graba en la unidad. (Puede comprobar el progreso de cualquiera de los comandos ejecutando lo siguiente en una ventana independiente en Linux:
sudo killall -USR1 dd
o en OS X:
sudo killall -INFO dd
que en ambos casos señala dd
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, a pesar de que el archivo de origen (descomprimido) ha terminado, y la unidad de disco debería estar llena. Si espero hasta que se hayan escrito 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 correctamente. Pero, me preocupa que el comportamiento no es lo que espero.
¿Alguna idea de por qué dd
¿la escritura no termina nunca, aunque ya no reciba datos?
(BTW: si estás usando esto como instrucciones para grabar tus 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 le dices que haga, así que si te equivocas de identificador y le dices que sobrescriba tu unidad de arranque, lo hará encantado. Mira en otro sitio cómo determinar el dispositivo correcto).
1 votos
¿Seguro que los identificadores de las unidades son correctos? En OS X, son
/dev/disk1
,/dev/disk2
etc.0 votos
Sí; mis ejemplos usaban los identificadores de Linux, pero en OS X usaba
/dev/disk2
(comprobando tres veces para no destrozar mi disco de arranque). Voy a aclarar en la pregunta.0 votos
@DanielGriscom Es posible que desee utilizar
cp
en lugar dedd
si no tiene necesidades especiales y sólo desea copiar el contenido de un dispositivo de bloque.0 votos
@DanielGriscom O
cat
si quieres canalizarlo en algún sitio.0 votos
@DanielGriscom Además: Deberías usar dispositivos rdisk para esas acciones: superuser.com/questions/631592/
0 votos
@MaxRied Interesante. Si hago una imagen de disco leyendo de
/dev/diskX
¿puedo escribirlo en un disco duro a través de/dev/rdiskX
? (¿La diferencia está sólo en el tratamiento de los datos, no en los datos en sí?)0 votos
@DanielGriscom exactamente