Diferencias entre dd en Mac OS X y Linux

Cuando uso Linux (Debian), a menudo uso dd para copyr una image de disco en una tarjeta SD. He escrito un script que arroja un error si el file del dispositivo especificado en la opción "de" es demasiado grande. Esto me impide accidentalmente volar uno de mis discos duros.

SD_SIZE=$(sudo sfdisk -s ${SD_DEV}) if [ $SD_SIZE -gt 33554432 ]; then echo "might not be and SD card, exiting" exit 1 fi 

Sin embargo, si inserto la tarjeta SD y olvido desmontarla, los resultados son incompletos. Algunas veces la copy tiene éxito y algunas veces falla.

Puedo modificar mi script con la respuesta aquí: Cómo verificar si un sistema de files está montado con un script

Sin embargo, ¿hay una opción en dd con esta funcionalidad? (En OS X, dd no escribirá en un disco montado por defecto)

También es de interés, ¿por qué dd (en OS X) error al intentar copyr a un disco montado? Tal vez algunas diferencias en el kernel o dd? Este es el error que obtienes si intentas convertirlo a una unidad que está montada en OS X (10.9):

dd: / dev / diskN: recurso ocupado, asegúrese de que el disco no esté en uso

Puedo escribir en el disco usando cp, así que quizás las llamadas al sistema que hace dd no son tan simples como ABRIR y ESCRIBIR.

Algunas veces la copy tiene éxito y algunas veces falla.

Probablemente falle porque algún process en el time escribió al sistema de files montado, supongo que por eso es una buena práctica para umount antes 🙂

dd debería ser simplemente open y write , supongo que la versión de MacOSX agrega algo de control y creo que es fácil de entender por qué con los nombres de sus dispositivos, en comparación con el control triple de Linux I antes de dd 'ing.