¿Existe una utilidad (o algo de magia de shell) que me permita comparar dos dispositivos de bloque?
Detalles: Tengo un dispositivo RAID grande (0,5 TB) del que hice una copia de seguridad en un dispositivo SATA un poco más grande con dd. El dispositivo tiene varias particiones, sin embargo, copio del dispositivo 'principal' y no de los nodos del dispositivo particionado (por ejemplo, copio / dev / hda y no / dev / hda1, por ejemplo).
Me gustaría verificar que la copia de seguridad sea buena / correcta.
He pensado en ejecutar md5sum en cada dispositivo, sin embargo, eso no me dará un resultado preciso ya que el segundo dispositivo es ligeramente más grande que el primero y, por lo tanto, los bytes adicionales cambiarán el hash.
fuente
info cmp
: "El comando 'cmp' compara dos archivos y, si difieren, le dice al primer byte y número de línea dónde difieren".--bytes=LIMIT
opción, estableciendo elLIMIT
valor en el tamaño de bytes del dispositivo más pequeño para detenerse al final de la unidad más pequeña (o límite de partición) sin tener quecmp
salir con un estado distinto de cero.Dependiendo de cuán llenas estén realmente las unidades, puede ser más rápido montar los sistemas de archivos y hacer
De lo contrario, diría algo como esto:
Obviamente descubra qué tan grande necesita hacer
bs
ycount
detenerse (o justo antes si es mucho más conveniente) al final de la unidad más pequeña.O, gracias al comentario de enzotib, parece que podría usar
cmp
, pero necesitará el-n
indicador para limitar el número de bytes a la más corta de las dos unidades.fuente
diff
no leerán todo el dispositivo antes de escribirlo.dd
escribebs
bytes inmediatamente después de leerlo (o procesar si se especifica, no aquí), y escriben enfifo
s, que bloquean hasta que se leen.Estás buscando software binario diff
rdiff
está diseñado para copia de seguridad y transmisión de red, mire rdiff-backup y duplicidad para propuso de copia de seguridad
xdelta3
es un diferencial binario de código abierto, herramientas de compresión diferencial, compresión VCDIFF (RFC 3284) delta.
bsdiff
también lo es! hambriento de memoria, no es adecuado para dispositivos de bloque.
fuente
Hay una utilidad llamada bsdiff , que hace exactamente este tipo de cosas. Lo hace realmente rápido y es capaz de generar un parche binario, si lo necesita.
Vea esta publicación para obtener alguna explicación al respecto.
fuente
bsdiff
El trabajo es más complejo que simplemente comparar dos archivos, por lo que dudo que pueda ser más rápido que el más simplecmp
.Puede comparar dos dispositivos de bloque de diferentes tamaños usando
md5sum
esto:(suponiendo que el dispositivo más pequeño es
/dev/sda
)fuente
Considera correr
fsck
en la copia de seguridad. Es posible que deba jugar algunos trucoslosetup
para configurar los dispositivos de bucle invertido en las particiones incrustadas en la copia de seguridad, pero si la verificación del archivo dice que la estructura del archivo es consistente, los datos en sí mismos probablemente sean buenos.Si desea una suma de verificación completa, puede usar dispositivos de bucle invertido con compensaciones para ver las 'particiones' internas de la copia de seguridad y md5sum cada una por separado, pero un forzado
fsck
puede darle una idea básica mucho más rápido que el byte para comparar bytes o los cálculos de suma de verificación.fuente