J'ai un tas de cartes SD SDHC UHS-1 de classe 10 de différents fabricants. Ils sont tous partitionnés comme suit
$ sudo fdisk -l /dev/sdj
Disk /dev/sdj: 14.9 GiB, 15931539456 bytes, 31116288 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0000de21
Device Boot Start End Sectors Size Id Type
/dev/sdj1 2048 1050623 1048576 512M c W95 FAT32 (LBA)
/dev/sdj2 1050624 2099199 1048576 512M 83 Linux
/dev/sdj3 2099200 3147775 1048576 512M 83 Linux
/dev/sdj4 3147776 31116287 27968512 13.3G 83 Linux
J'ai utilisé un duplicateur de carte mémoire pour copier les images. Toutes les cartes ont le même contenu.
Lorsque je monte la deuxième partition de deux cartes SD et compare le contenu, elles sont exactement les mêmes.
$ sudo mount -o ro /dev/sdg2 /mnt/system-a/
$ sudo mount -o ro /dev/sdj2 /mnt/system-b/
$ diff -r --no-derefence /mnt/system-a /mnt/system-b/
$ # prints nothing^
Cependant, si je compare le sha1sum des partitions, elles diffèrent parfois
$ sudo dd if=/dev/sdg2 | sha1sum
1048576+0 records in
1048576+0 records out
536870912 bytes (537 MB) copied, 12.3448 s, 43.5 MB/s
ee7a16a8d7262ccc6a2e6974e8026f78df445e72 -
$ sudo dd if=/dev/sdj2 | sha1sum
1048576+0 records in
1048576+0 records out
536870912 bytes (537 MB) copied, 12.6412 s, 42.5 MB/s
4bb6e3e5f3e47dc6cedc6cf8ed327ca2ca7cd7c4 -
Plus étrange, si je compare ces deux disques à l'aide d'un outil de comparaison binaire comme radiff2
, je vois ce qui suit
$ sudo dd if=/dev/sdg2 of=sdg2.img
1048576+0 records in
1048576+0 records out
536870912 bytes (537 MB) copied, 12.2378 s, 43.9 MB/s
$ sudo dd if=/dev/sdj2 of=sdj2.img
1048576+0 records in
1048576+0 records out
536870912 bytes (537 MB) copied, 12.2315 s, 43.9 MB/s
$ radiff2 -c sdg2.img sdj2.img
767368
767368 changements, même si diff
aucune différence n'a été constatée dans le contenu!
Et pour raison, si je compare deux partitions qui avaient le même sha1sum, je vois ce qui suit
$ radiff2 -c sdj2.img sdf2.img
0
0 changements!
Voici une ventilation des différents sha1sums que je vois sur différentes cartes. Il semble que le fabricant de la carte ait une grande influence sur le montant que je reçois lorsque j'utilise dd pour lire le lecteur.
Malgré les différences de sha1sums, toutes ces cartes fonctionnent pour mes besoins. Cependant, cela rend la vérification d'intégrité difficile car je ne peux pas comparer les sha1sums.
Comment est-il possible que deux partitions de carte SD puissent avoir des sha1sums différents, mais avoir exactement le même contenu une fois montées?
Réponse: Alors maintenant, cela fonctionne comme prévu. Pour clarifier les choses, l'incohérence a été causée par le duplicateur SySTOR que j'utilisais. Le paramètre de copie que je lui ai fait utiliser des informations et des fichiers de partition copiés, mais il n'a pas fallu dd les bits pour s'assurer qu'il y avait une correspondance un à un.
Réponses:
Avez-vous comparé leur contenu immédiatement après avoir écrit le contenu dupliqué? Si oui, ils devraient sortir exactement la même chose. Par exemple,
Cela n'est vrai que si les cartes ont exactement la même taille. Parfois, même différents lots de cartes qui sont du même fabricant et du même modèle sortent avec des tailles légèrement différentes. Utilisez
blockdev --getsize64
pour obtenir la taille exacte de l'appareil.De plus, si les deux cartes ont des tailles exactement identiques mais que vous avez écrit une image sur les deux cartes qui était plus petite que la capacité des cartes, les déchets qui viennent après la fin de l'image peuvent entraîner des différences.
Une fois que vous avez monté un système de fichiers sur l'appareil, vous verrez des différences. L'implémentation du système de fichiers écrira diverses choses sur le système de fichiers, comme un journal vide ou un indicateur / horodatage pour marquer le système de fichiers comme propre, et vous ne verrez plus de contenu identique. Je pense que cela peut être le cas dans certaines circonstances, même si vous montez le système de fichiers en lecture seule.
la source
blockdev --getsize64
? Il sembledd
annoncer la quantité de données qu'il lit.dd
rapportera combien il a copié . En cas de différence de taille entre un fichier image, la taille d'un appareil et la taille d'un autre appareil, etc ... qui peut être la taille de la source, la destination, ou les deux.dd
récupère les cartes SD de mon ordinateur (comme je l'ai fait avec l'image principale du duplicateur), toutes les shasums correspondent. J'ai changé les paramètres du SySTOR de "systèmes et fichiers de données uniquement" en "médias entiers" et maintenant toutes les cartes dupliquées ont des shasums correspondantsPour s'appuyer sur la réponse de Celada: D'une part, vous faites un
diff
(récursif) entre deux systèmes de fichiers montés. D'un autre côté, vous effectuez une comparaison binaire entre des périphériques dotés de systèmes de fichiers - apparemment, après avoir monté les systèmes de fichiers. Ce sont des pommes et des grenades.L'opération au niveau du système de fichiers monté ne peut voir que le contenu des données des fichiers dans les systèmes de fichiers. La comparaison binaire entre les appareils examine les données et les métadonnées . Je suis un peu surpris par les différences 767368, mais je peux en deviner quelques-unes:
diff
, chaque fichier sur chaque périphérique aura son temps d'accès (dans l'inode) mis à jour.PS Avez-vous besoin d'utiliser
dd
autant? Que se passe-t-il si vous le faitesradiff2 -c /dev/sdg2 /dev/sdj2
ousha1sum /dev/sdg2
?la source
ro
(lecture seule) ne devrait pas provoquer (ou autoriser) de modification. (Bien que j'aie vu un ou deux cas de logiciel faire autre chose que ce qu'il devrait faire.) (2) Après avoir lu vos commentaires (un sur chaque réponse, au moment d'écrire ces lignes), je ne comprends toujours pas très bien ce que arrivé. Voulez-vous s'il vous plaît modifier votre question ou publier une réponse expliquant les circonstances dans lesquelles vous avez échoué à la comparaison (c'est-à-dire, il a trouvé des différences) immédiatement après la duplication (avant le montage),… (suite)