3

У меня есть 2 очень больших файла (27G и 40G), которые выводятся командой dd на неисправном жестком диске. Я хотел сравнить первые байты, чтобы увидеть, являются ли байты 27G началом / подстрокой 40G.

Я хотел использовать командование head . Поскольку эти файлы являются двоичными, я использовал аргумент -c :

# ls -ahl *.dd
-rw-r--r-- 1 root root 40G May 17 20:16 mac.dd
-rw-r--r-- 1 root root 27G May 18 09:47 mac2.dd

Попытка получить 1K необработанных данных:

# head -c1K mac.dd
(returns nothing)

Попытка получить 1K с помощью hexdump:

# head -c1K mac.dd | hexdump
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
0000400
(end)

Попытка получить 10K с помощью hexdump:

# head -c10K mac.dd | hexdump
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
0002800
(end)

Хотя:

Попытка получить 100 байт необработанных данных в /bin /ls:

# head -c100 /bin/ls 
ELF>�H@@p�@8    @@@@@@�

Попытка получить 100 байтов шестнадцатеричных данных в /bin /ls:

# head -c100 /bin/ls | hexdump
0000000 457f 464c 0102 0001 0000 0000 0000 0000
0000010 0002 003e 0001 0000 4880 0040 0000 0000
0000020 0040 0000 0000 0000 b670 0001 0000 0000
0000030 0000 0000 0040 0038 0009 0040 001c 001b
0000040 0006 0000 0005 0000 0040 0000 0000 0000
0000050 0040 0040 0000 0000 0040 0040 0000 0000
0000060 01f8 0000                              
0000064

Результаты на mac2.dd точно такие же, но, похоже, результат не совсем тот, который я ожидаю, поэтому я не думаю, что это означает, что файлы начинаются с одинаковых данных. Голова на двоичном /bin/ls - это то, что я ожидал.

Я не понимаю этот вывод файлов dd . Может кто-нибудь объяснить это мне, пожалуйста?

Спасибо.

1 ответ1

4

Я отвечаю сам.

Из этого поста я узнал, что « * » в hexdump означает «такой же, как предыдущая строка». Это означает, что весь мой dd файл заполнен \0 символами.

Я могу сделать это с помощью:

head -c1000 mac.dd | hexdump -v
0000000 0000 0000 0000 0000 0000 0000 0000 0000
0000010 0000 0000 0000 0000 0000 0000 0000 0000
0000020 0000 0000 0000 0000 0000 0000 0000 0000
0000030 0000 0000 0000 0000 0000 0000 0000 0000
0000040 0000 0000 0000 0000 0000 0000 0000 0000
[...]

Или короче:

# hexdump -v -n1000 mac.dd
0000000 0000 0000 0000 0000 0000 0000 0000 0000
0000010 0000 0000 0000 0000 0000 0000 0000 0000
0000020 0000 0000 0000 0000 0000 0000 0000 0000
0000030 0000 0000 0000 0000 0000 0000 0000 0000
0000040 0000 0000 0000 0000 0000 0000 0000 0000
[...]

Итак, теперь я знаю, что dd дамп заполнен ничем.

Спасибо всем, кто прочитал мою проблему здесь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .