Ich habe ein paar UHS-1 SDHC SD-Karten der Klasse 10 von verschiedenen Herstellern. Sie sind alle wie folgt unterteilt
$ 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
Ich habe einen Speicherkarten-Duplikator verwendet, um die Bilder zu kopieren. Alle Karten haben den gleichen Inhalt.
Wenn ich die zweite Partition von zwei SD-Karten einbinde und den Inhalt vergleiche, sind sie genau gleich.
$ 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^
Wenn ich jedoch die Summe der Partitionen vergleiche, unterscheiden sie sich manchmal
$ 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 -
Seltsamerweise radiff2
sehe ich folgendes , wenn ich diese beiden Laufwerke mit einem binären Diffing Tool vergleiche
$ 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 Änderungen, obwohl diff
keine inhaltlichen Unterschiede festgestellt wurden !
Wenn ich zwei Partitionen vergleiche, die die gleiche Summe hatten, sehe ich aus Gründen der Übersichtlichkeit Folgendes
$ radiff2 -c sdj2.img sdf2.img
0
0 Änderungen!
Hier ist eine Aufschlüsselung der verschiedenen sha1sums, die ich von verschiedenen Karten sehe. Es scheint, als ob der Hersteller der Karte einen großen Einfluss darauf hat, wie viel Geld ich bekomme, wenn ich das Laufwerk mit dd auslese.
Trotz der Unterschiede in der Summe funktionieren alle diese Karten für meine Zwecke. Dies erschwert jedoch die Integritätsprüfung, da ich sha1sums nicht vergleichen kann.
Wie ist es möglich, dass zwei SD-Kartenpartitionen unterschiedliche sha1sums haben und beim Mounten genau den gleichen Inhalt haben?
Antwort: Jetzt funktioniert es also wie erwartet. Zur Klärung wurde die Inkonsistenz durch den von mir verwendeten SySTOR-Duplikator verursacht. Die Kopiereinstellung, die ich hatte, verwendete kopierte Partitionsinformationen und -dateien, aber es war nicht erforderlich, die Bits zu kopieren, um sicherzustellen, dass es eine Eins-zu-Eins-Übereinstimmung gab.
Antworten:
Haben Sie den Inhalt sofort nach dem Schreiben des duplizierten Inhalts verglichen ? Wenn ja, sollten sie genau gleich rauskommen. Beispielsweise,
Dies gilt nur, wenn die Karten genau die gleiche Größe haben. Manchmal werden sogar unterschiedliche Kartenstapel, die vom selben Hersteller und Modell stammen, mit geringfügig unterschiedlichen Größen ausgegeben. Verwenden Sie
blockdev --getsize64
, um die genaue Größe des Geräts zu ermitteln.Wenn beide Karten exakt die gleiche Größe haben, Sie jedoch ein Bild auf beide Karten geschrieben haben, das kleiner als die Kapazität der Karten ist, kann der nach dem Ende des Bildes entstehende Müll zu einer Meldung von Unterschieden führen.
Sobald Sie ein Dateisystem auf dem Gerät bereitgestellt haben, werden Sie Unterschiede feststellen. Die Dateisystemimplementierung schreibt verschiedene Dinge in das Dateisystem, z. B. ein leeres Journal oder ein Flag / einen Zeitstempel, um das Dateisystem als sauber zu kennzeichnen, und dann sehen Sie keinen identischen Inhalt mehr. Ich glaube, dass dies unter bestimmten Umständen der Fall sein kann, auch wenn Sie das Dateisystem schreibgeschützt bereitstellen.
quelle
blockdev --getsize64
? Es sieht so aus,dd
als würde die gelesene Datenmenge angekündigt.dd
wird berichten, wie viel es kopiert hat . Bei Größeninkongruenzen zwischen einer Bilddatei, der Größe eines Geräts und der Größe eines anderen Geräts usw. kann dies die Größe der Quelle, des Ziels oder beides sein.dd
die SD-Karten von meinem Computer (wie ich es mit dem Master-Image für den Kopierer getan habe), stimmen alle Shasums überein. Ich habe die Einstellungen auf dem SySTOR von "nur Systeme und Dateidaten" auf "ganze Medien" geändert und jetzt haben alle duplizierten Karten passende ShasumsAufbauend auf Celadas Antwort: Einerseits machen Sie eine
diff
(rekursive) Verbindung zwischen zwei gemounteten Dateisystemen. Auf der anderen Seite führen Sie einen binären Vergleich zwischen Geräten mit Dateisystemen durch - anscheinend nachdem Sie die Dateisysteme gemountet haben. Das sind Äpfel und Granatäpfel.Die Operation auf der Ebene des bereitgestellten Dateisystems kann nur den Dateninhalt der Dateien in den Dateisystemen anzeigen. Der binäre Vergleich zwischen den Geräten betrachtet die Daten und die Metadaten . Ich bin ein bisschen überrascht von den 767368 Unterschieden, aber ich kann ein paar raten:
diff
, wurde für jede Datei auf jedem Gerät die Zugriffszeit (im Inode) aktualisiert.PS Müssen Sie
dd
so viel verwenden? Was passiert, wenn Sieradiff2 -c /dev/sdg2 /dev/sdj2
odersha1sum /dev/sdg2
?quelle
ro
(read-only) sollte nicht Ursache (oder lassen) jede Änderung. (Obwohl ich ein oder zwei Fälle von Software gesehen habe, in denen etwas anderes als das getan wurde, was getan werden sollte.) (2) Nachdem ich Ihre Kommentare gelesen habe (eine zu jeder Antwort zum Zeitpunkt dieses Schreibens), verstehe ich immer noch nicht ganz, was passierte. Werden Sie entweder bearbeiten Sie Ihre Frage bitte oder eine Antwort hinterlassen , unter welchen Umständen erklären Sie Vergleich Ausfall bekam (dh es Unterschiede gefunden) unmittelbar nach (vor der Montage) Duplizieren ... (Fortsetzung)