¿Cómo verificar la integridad de una copia de seguridad dd?

11

Acabo de hacer una copia de seguridad de un disco duro completo (50 GB) a sshtravés de:

dd if=/dev/hda | buffer -s 64k -S 10m | ssh myuser@myhost "cat > ~/image.img"

¿Cuál es ahora la mejor manera de verificar la integridad del archivo image.img, es decir, cómo verificar que todo se haya copiado correctamente?

estudiante
fuente
Por lo general, cuando lo haces, siempre es perfecto. Sin embargo, siempre puede ejecutar sha1sum para verificar los hash sha1 del original y la copia de seguridad.
darnir
2
" Por lo general ... siempre es perfecto". Eso me recuerda la cita de The Naked Gun: "Los médicos dicen que Nordberg tiene una probabilidad de 50/50 de vivir, aunque solo hay un 10 por ciento de posibilidades de eso".
Sparhawk

Respuestas:

10

Si el comando finalizó con éxito, la copia de seguridad es correcta, salvo un error de hardware (que podría afectar igualmente cualquier verificación que pueda realizar). Más tarde puede volverse incorrecto si el hardware es defectuoso, pero la mayoría del hardware de almacenamiento detecta daños.

Aquí hay una advertencia: en una tubería, el shell no informa errores desde el lado izquierdo. (Esto se debe a un escenario bastante común en el que el lado derecho no necesita leer todos los datos, por ejemplo some_command | head, y los troqueles lado izquierdo debido a su producción ya no quería.) Así que aquí un error de lectura de ddWould ser ignorado. En bash, configure la pipefailopción para informar errores de todas las partes de la tubería.

Además, tenga en cuenta que dd bs=…ignora algunos errores y ddsuele ser más lento que las alternativas . Recomiendo no usarlo dden absoluto: no tiene beneficios simplemente copiar un archivo completo. Al contrario de lo que podría haber leído en alguna parte, ddno es un comando de acceso al disco de bajo nivel con propiedades especiales, no hay absolutamente ninguna magia dd, la magia está dentro /dev/hda.

shopt -s pipefail
set -e
</dev/hda buffer -s 64k -S 10m | ssh myuser@myhost "cat > ~/image.img"

Sin embargo, si desea verificar la copia de seguridad, la mejor manera es tomar una suma de verificación criptográfica en cada lado y compararlos. Por ejemplo:

ssh myuser@myhost "sha1sum image.img" &
sudo sha1sum /dev/hda

Verifique que las dos sumas de verificación sean idénticas.

Tenga en cuenta que esto prueba si la copia de seguridad y el original son idénticos en el momento de la verificación. Cualquier cosa que cambie /dev/hda, incluido el montaje y desmontaje de un sistema de archivos, incluso sin realizar ningún cambio (que actualizará una última fecha de montaje en muchos sistemas de archivos), cambiará la suma de comprobación. Si desea verificar la integridad más adelante, anote la suma de comprobación del disco en el momento de la copia de seguridad en algún lugar.

Gilles 'SO- deja de ser malvado'
fuente
3
Tenga en cuenta que si nada en /dev/hdaha cambiado desde que se realizó la copia de seguridad de los valores hash no coincidirán.
bahamat
El beneficio de una comprobación de hash es que los falsos negativos (el error cometido en la grabación de la imagen, por casualidad, se repite durante la ejecución del hash, de modo que una falla pasa desapercibida) es astronómicamente minúsculo. Si hay alguna falla de hardware, debería resultar abrumadoramente en una comprobación de hash fallida. Obtendrá una comprobación falsa de falsos positivos si el disco ha cambiado, como se ha señalado.
Steven Lu
@StevenLu No, la posibilidad de correlación es bastante alta, porque las fallas de hardware no son uniformemente aleatorias. En particular, los errores de RAM (que son las fallas de hardware más comunes que se pueden observar en las PC típicas) ocurren en bits específicos.
Gilles 'SO- deja de ser malvado'
De acuerdo, probablemente ... hachís como este con un gran grano de sal, claro, pero OP se estaba transfiriendo a través de una red. Es inherentemente poco confiable, a pesar de TCP. Además, es probable que no veamos el mismo patrón de acceso exacto (en la memoria física).
Steven Lu
Nueva pregunta relacionada que busca aclaraciones sobre la primera oración de @Gilles.
Sparhawk
5

Como mencionaron Darnir y Giles, lo mejor que puede hacer es ejecutar hashes criptográficos inmediatamente después de la copia de seguridad antes de que se haya modificado algo en su disco de origen. Sin embargo, si ha utilizado el disco desde entonces, es muy probable que los hashes no coincidan. Incluso cambiar un byte en el disco dará como resultado un hash completamente diferente.

Aunque es mucho menos que ideal, puede verificar la imagen al montarla. En el sistema donde está la imagen del disco, ejecute lo siguiente (cree /mnt/disksi no existe o use una ubicación alternativa):

mount -o loop image.img /mnt/disk

Luego puede navegar /mnt/disky ver todos los archivos. Verifique los hash sha1 de los archivos críticos dentro de la imagen contra los originales para verificar su integridad.

bahamat
fuente
-1

Use el comando qemu-img

qemu-img check image.img
PolkaRon
fuente