
Un amigo está intentando clonar una tarjeta CF usando el siguiente comando de Linux:
sudo dd if=/dev/sdb of=card3.img bs=4M status=progress
pero cada vez produce una imagen diferente. Las dos primeras tarjetas que tomaron imágenes produjeron resultados inconsistentes. ¿Cuál podría ser la causa de esto?
Respuesta1
Simplemente montar con acceso de escritura (rw) podría escribir cosas, en los sistemas de archivos ext hay al menos los siguientes atributos que se actualizan:
- Montado por última vez en
- Recuento de monturas
- Hora del último montaje
- Y los posibles tiempos de acceso a los archivos que se actualizan cuando los archivos recién se leen (los montajes
noatime
deberían detenerlos). - Y un atributo de "Última hora de escritura" si se produce la escritura)
En realidad, montandosin
-r
El acceso de escritura (usando el / de montaje-o ro
) aún podría escribir en el dispositivo, consulte man mount:-r, --solo lectura
Monte el sistema de archivos de solo lectura. Un sinónimo es -o ro.
Tenga en cuenta que, dependiendo del tipo de sistema de archivos, el estado y el comportamiento del kernel, el sistemaaún puede escribir en el dispositivo. Por ejemplo, ext3 y ext4 reproducirán el diario si el sistema de archivos está sucio. Para evitar este tipo de acceso de escritura, es posible que desee montar un sistema de archivos ext3 o ext4 con elro, sin cargaopciones de montaje o configurar el dispositivo de bloque en modo de solo lectura, consulte el
blockdev
comando (8).Y
blockdev
tiene el--setro
comando para configurar un dispositivo de bloque como de solo lectura
Podrías comparar las imágenes y ver qué bytes son diferentes, con cmp
o algo así vbindiff
. Solo unos pocos bytes podrían ser una fecha o un recuento en alguna parte (no estoy seguro de si los atributos están almacenados como texto sin formato o codificados de alguna manera).
O monte dos (o más) imágenes en modo de solo lectura y compare solo los archivos. Plain diff
puede comparar árboles de directorios, pero prefiero una interfaz gráfica de usuario como kdiff3
. Si la única diferencia está en el recuento de montaje o en la hora del último montaje, no aparecerá en los archivos (probablemente tampoco aparecerán diferentes tiempos de acceso a archivos).
O tal vez el dispositivo o su RAM o algo más está funcionando mal y leyendo diferentes bytes aquí y allá.
También puede mantener el dispositivo desmontado, crear una imagen, luego desconectar y volver a conectar el dispositivo (aún desmontado) y crear otra imagen y luego comparar, deberían ser iguales.