Mam kilka kart SD 10 SDHC klasy UHS-1 różnych producentów. Wszystkie są podzielone na partycje w następujący sposób
$ 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
Do skopiowania zdjęć użyłem powielacza kart pamięci . Wszystkie karty mają tę samą zawartość.
Kiedy montuję drugą partycję dowolnych dwóch kart SD i porównuję zawartość, są one dokładnie takie same.
$ 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^
Jeśli jednak porównam sumę partycji, czasem się różnią
$ 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 -
Dziwne, jeśli porównam te dwa dyski za pomocą narzędzia do różnicowania binarnego radiff2
, zobaczę następujące
$ 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 zmian, mimo że diff
nie widziałem żadnych różnic w treści!
Jeśli chodzi o zdrowie psychiczne, jeśli porównam dwie partycje, które miały takie same sumy, zobaczę, co następuje
$ radiff2 -c sdj2.img sdf2.img
0
0 zmian!
Oto podział różnych sum sha1, które widzę z różnych kart. Wygląda na to, że producent karty ma duży wpływ na to, co otrzymuję, gdy używam dd do odczytu dysku.
Pomimo różnic w sumach sha1, wszystkie te karty działają dla moich celów. Utrudnia to jednak sprawdzanie integralności, ponieważ nie mogę porównać sum sha1.
Jak to możliwe, że dwie partycje kart SD mogą mieć różne sumy sha1, a jednocześnie mieć dokładnie taką samą zawartość po zamontowaniu?
Odpowiedź: Więc teraz działa zgodnie z oczekiwaniami. Aby to wyjaśnić, niespójność została spowodowana przez używany przeze mnie duplikator SySTOR. W ustawieniach kopiowania użyłem skopiowanych informacji o partycjach i plikach, ale nie trzeba było dodawać bitów, aby upewnić się, że istnieje dopasowanie jeden do jednego.
Odpowiedzi:
Czy porównałeś ich zawartość natychmiast po napisaniu zduplikowanej zawartości? Jeśli tak, powinny wyjść dokładnie tak samo. Na przykład,
Jest to prawdą tylko wtedy, gdy karty mają dokładnie taki sam rozmiar. Czasami nawet różne partie kart tego samego producenta i modelu mają nieco inne rozmiary. Użyj,
blockdev --getsize64
aby uzyskać dokładny rozmiar urządzenia.Ponadto, jeśli obie karty mają dokładnie identyczne rozmiary, ale napisałeś na obu kartach obraz, który był mniejszy niż pojemność kart, to śmieci pojawiające się po końcu obrazu mogą powodować zgłaszanie różnic.
Po zamontowaniu dowolnego systemu plików na urządzeniu zaczniesz widzieć różnice. Implementacja systemu plików zapisze w systemie różne rzeczy, takie jak pusty dziennik lub znacznik / znacznik czasu, aby oznaczyć system plików jako czysty, a wtedy nie będzie już widać identycznej zawartości. Wydaje mi się, że tak może być w niektórych okolicznościach, nawet jeśli podłączysz system plików tylko do odczytu.
źródło
blockdev --getsize64
? Wygląda nadd
to, że ogłasza ilość danych, które czyta.dd
poinformuje, ile zostało skopiowane . W przypadku niedopasowania rozmiaru między plikiem obrazu, rozmiarem jednego urządzenia i rozmiarem innego urządzenia itp., Który może być rozmiarem źródła, przeznaczenia lub obu tych elementów.dd
karty SD z mojego komputera (jak to zrobiłem z obrazem głównym dla powielacza), wszystkie szasum pasują do siebie. Zmieniłem ustawienia SySTOR z „samych systemów i plików” na „całe media”, a teraz wszystkie zduplikowane karty mają pasujące shasumsOpierając się na odpowiedzi Celady: Z jednej strony wykonujesz
diff
(rekurencyjną) między dwoma zamontowanymi systemami plików. Z drugiej strony porównujesz binarnie urządzenia, na których są systemy plików - najwyraźniej po zamontowaniu systemów plików. To jabłka i granaty.Operacja na poziomie zamontowanego systemu plików może wyświetlać tylko zawartość danych plików w systemach plików. Porównanie binarne między urządzeniami sprawdza dane i metadane . Jestem trochę zaskoczony różnicami 767368, ale zgaduję na kilka:
diff
, każdy plik na każdym urządzeniu będzie miał zaktualizowany czas dostępu (w i-węzle).PS Czy potrzebujesz
dd
tak dużo? Co się stanie, jeśli to zrobiszradiff2 -c /dev/sdg2 /dev/sdj2
lubsha1sum /dev/sdg2
?źródło
ro
(tylko do odczytu) nie powinno powodować (ani zezwalać) na jakiekolwiek modyfikacje. (Chociaż widziałem jeden lub dwa przypadki oprogramowania, które robią coś innego niż powinno.) (2) Po przeczytaniu twoich komentarzy (po jednej na każdą odpowiedź w momencie pisania tego tekstu) nadal nie rozumiem, co stało się. Czy możesz zredagować swoje pytanie lub opublikować odpowiedź wyjaśniającą okoliczności, w których wystąpił błąd porównania (tj. Znaleziono różnice) natychmiast po powieleniu (przed montażem),… (ciąg dalszy)