Comment vérifier l'intégrité d'une sauvegarde dd?

11

Je viens de faire une sauvegarde d'un disque dur entier (50 Go) sshvia:

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

Quelle est maintenant la meilleure façon de vérifier l'intégrité du fichier image.img, c'est-à-dire comment vérifier que tout est copié correctement?

étudiant
la source
Habituellement, quand vous dd, c'est toujours parfait. Cependant, vous pouvez toujours exécuter sha1sum pour vérifier les hachages sha1 de l'original et de la sauvegarde.
darnir
2
" Habituellement ... c'est toujours parfait." Cela me rappelle cette citation de The Naked Gun: "Les médecins disent que Nordberg a une chance de vivre de 50/50, bien qu'il n'y ait qu'une chance de 10 pour cent de cela".
Sparhawk

Réponses:

10

Si la commande s'est terminée avec succès, la sauvegarde est correcte, sauf erreur matérielle (qui pourrait également affecter toute vérification que vous pourriez effectuer). Il peut devenir incorrect ultérieurement si le matériel est défectueux, mais la plupart du matériel de stockage détecte la corruption.

Il y a une mise en garde ici: dans un pipeline, le shell ne signale pas les erreurs du côté gauche. (Ceci est dû à un scénario assez commun où la droite n'a pas besoin de lire toutes les données, par exemple some_command | head, et les matrices de gauche parce que sa sortie ne se voulait plus.) Voici donc une erreur de lecture de ddPlût Etre ignoré. Dans bash, définissez l' pipefailoption pour signaler les erreurs de toutes les parties du pipeline.

Attention également, qui dd bs=…ignore certaines erreurs et ddest souvent plus lent que les alternatives . Je recommande de ne pas utiliser dddu tout: cela n'a aucun avantage de simplement copier un fichier entier. Contrairement à ce que vous avez pu lire quelque part, ce ddn'est pas une commande d'accès au disque de bas niveau avec une propriété spéciale, il n'y a absolument aucune magie dd, la magie est là /dev/hda.

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

Néanmoins, si vous souhaitez vérifier la sauvegarde, le meilleur moyen est de prendre une somme de contrôle cryptographique de chaque côté et de les comparer. Par exemple:

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

Vérifiez que les deux sommes de contrôle sont identiques.

Notez que cela teste si la sauvegarde et l'original sont identiques au moment de la vérification. Tout ce que vous modifiez /dev/hda, y compris le montage et le démontage d'un système de fichiers même sans apporter de modification (qui mettra à jour une dernière date de montage sur de nombreux systèmes de fichiers), changera la somme de contrôle. Si vous souhaitez vérifier l'intégrité ultérieurement, notez quelque part la somme de contrôle du disque au moment de la sauvegarde.

Gilles 'SO- arrête d'être méchant'
la source
3
Notez que si quoi que ce soit sur /dev/hdaa changé depuis la mise en retour a été fait hachages ne correspondront pas.
bahamat
L'avantage d'une vérification de hachage est que les faux négatifs (une erreur commise lors de l'enregistrement de l'image est, par hasard, répété pendant le hachage, de sorte qu'un défaut passe inaperçu) sont minuscules astronomiquement. Si une défaillance matérielle est présente, elle devrait entraîner une écrasante vérification de hachage. Obtiendra un échec de vérification faux positif si le disque a été changé, comme cela a été noté.
Steven Lu
@StevenLu Non, le risque de corrélation est assez élevé, car les défauts matériels ne sont pas uniformément aléatoires. En particulier, les erreurs de RAM (qui sont les défauts matériels les plus courants observables sur les PC typiques) se produisent sur des bits spécifiques.
Gilles 'SO- arrête d'être méchant'
D'accord, probablement ... du hachage comme celui-ci avec un gros grain de sel, bien sûr, mais OP était en cours de transfert sur un réseau. C'est juste intrinsèquement peu fiable, malgré TCP. En outre, il est probable que nous ne verrons pas le même modèle d'accès exact (dans la mémoire physique).
Steven Lu
Nouvelle question connexe demandant des éclaircissements sur la première phrase de @Gilles.
Sparhawk
5

Comme Darnir & Giles l'a mentionné, la meilleure chose à faire est d'exécuter des hachages cryptographiques immédiatement après la sauvegarde avant que quoi que ce soit n'ait été modifié sur votre disque source. Si, cependant, vous avez utilisé le disque depuis lors, les hachages ne correspondront probablement pas. Même la modification d'un octet sur le disque entraînera un hachage complètement différent.

Bien qu'elle soit loin d'être idéale, vous pouvez vérifier l'image en la montant. Sur le système où se trouve l'image disque, exécutez ce qui suit (créez /mnt/disks'il n'existe pas ou utilisez- nous un autre emplacement):

mount -o loop image.img /mnt/disk

Vous pouvez ensuite parcourir /mnt/disket voir tous les fichiers. Vérifiez les hachages sha1 des fichiers critiques à l'intérieur de l'image par rapport aux originaux pour vérifier leur intégrité.

bahamat
la source
-1

Utilisez la commande qemu-img

qemu-img check image.img
PolkaRon
la source