2

Может кто-нибудь объяснить мне, что делает эта команда:

dd if=/dev/zero of=10MBfile1 count=10000 bs=1024

который производит этот вывод:

10000+0 records in
10000+0 records out
10240000 bytes (10 MB) copied, 0.146924 s, 69.7 MB/s

Я не мог понять этого, поэтому кто-то может объяснить мне, что происходит и что это делает. Благодарю.

2 ответа2

3
  • он копирует из /dev /zero, который является специальным файлом с постоянным потоком нулей.
  • это копирует это в файл на диске, названный '10MBfile1'
  • он делает это блоками (например, кусками) по 1024 байта,
  • и он делает 10000 блоков, что равно 10 МБ.

Итак, в итоге, он создает файл на диске размером 10 МБ, который заполнен только нулями на диске.

Например:

dd if=/dev/zero of=blah count=10 bs=10

Создает похожий файл с именем 'blah ;, но размером всего 100 байт, и ...

$hexdump blah
0000000 0000 0000 0000 0000 0000 0000 0000 0000
0000060 0000 0000                              

Показывает, что он пуст.

2

На странице руководства dd , по крайней мере, в моей нынешней системе Debian Linux, для краткого обзора написано «скопировать и преобразовать файл». Это может быть немного запутанным.

Первоначально целью dd было преобразование файла из формата IBM EBCDIC в формат ASCII. Он по-прежнему делает это, если вы укажете правильные параметры, но если у вас не будет лежать куча файлов с мэйнфреймов IBM, вы не будете так часто их использовать.

dd просто копирует необработанные байты из входного файла (if=) в выходной файл (of=). Число байтов, которые он будет копировать, будет bs= times count= .

(Потенциально очень разрушительная) сила dd заключается в том, что он не заботится о том, что указанные файлы являются реальными файлами, разделами необработанного диска (/dev/sda1), всем устройством самого необработанного диска (/dev/sda), стандартным вводом или выводом ленточный накопитель, флэш-устройство MTD, CMOS вашей системы (/dev/nvram), графическая видеопамять (/dev/fb0), память ядра (/dev/kmem) и т. д. Это просто делает это.

Таким образом, поскольку таблица разделов жесткого диска находится на блоке 0 вашего жесткого диска, а длина этого блока составляет 512 байт, это создаст резервную копию таблицы разделов жесткого диска (и загрузчика первого этапа) в файл:

# dd if=/dev/sda of=sda.sector0.bin bs=512 count=1

Если вы хотите восстановить его по какой-либо причине, просто измените параметры if= и of= .

Если вы не укажете count= , он будет работать до конца устройства. Это запишет нули на весь ваш жесткий диск:

# dd if=/dev/zero of=/dev/sda

Так что будьте осторожны.

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