Создание образа карты CF приводит к непоследовательным результатам

Создание образа карты CF приводит к непоследовательным результатам

Мой друг пытается клонировать CF-карту с помощью следующей команды Linux:

sudo dd if=/dev/sdb of=card3.img bs=4M status=progress

но каждый раз он выдает другой образ. Первые две карты, которые они отобразили, дали противоречивые результаты. В чем может быть причина этого?

решение1

Даже простое монтирование с доступом на запись (rw) может приводить к записи данных, в файловых системах ext обновляются как минимум следующие атрибуты:

  • Последний раз устанавливался на
  • Количество горений
  • Время последнего монтирования
  • И возможное время доступа к файлам, которое обновляется, когда файлы просто читаются (монтирование noatimeдолжно их останавливать).
  • И атрибут «Время последней записи», если запись происходит)

На самом деле, монтажбездоступ на запись (с использованием монтирования -r/ -o ro) может по-прежнему записывать данные на устройство, см. man mount:

-r, --только для чтения

Монтировать файловую систему только для чтения. Синоним -o ro.

Обратите внимание, что в зависимости от типа файловой системы, состояния и поведения ядра системаможет по-прежнему записывать данные на устройство. Например, ext3 и ext4 будут воспроизводить журнал, если файловая система грязная. Чтобы предотвратить такой доступ к записи, вы можете захотеть смонтировать файловую систему ext3 или ext4 сро,без нагрузкипараметры монтирования или установка самого блочного устройства в режим только для чтения, см. blockdevкоманду (8).

И blockdevимеет --setroкоманду, чтобы установить блочное устройство как доступное только для чтения

Вы можете сравнить изображения и увидеть, какие байты отличаются, с помощью cmpили что-то вроде vbindiff. Только несколько байтов могут быть датой или количеством где-то (я не уверен, хранятся ли атрибуты как простой текст или как-то закодированы).

Или только для чтения смонтируйте два (или более) образа и сравните только файлы. Plain diffможет сравнивать деревья каталогов, но я предпочитаю gui, например kdiff3. Если единственное различие заключается в количестве монтирований или времени последнего монтирования, оно не отобразится в файлах (разное время доступа к файлам, вероятно, тоже не отобразится).

Или, может быть, устройство, оперативная память или что-то еще выходит из строя и считывает разные байты здесь и там.

Вы также можете оставить устройство отключенным, создать образ, затем отключить и снова подключить устройство (все еще отключенное), создать еще один образ и сравнить — они должны быть одинаковыми.

Связанный контент