Как пользоваться командой DD


Это мощная низкоуровневая утилита в состоянии сделать много разных вещей, например резервное копирование раздела, клонировать диск или флэшку, читать память.

Страница man, говорит нам:

«DD это приложение, которое может конвертировать и копировать файлы»

GNU DD это часть пакета Fileutils, в отличие от большинства команд в Unix, DD использует формат записи keyword=value.

Основы использования

Утилита DD копирует указанную входную точку в указанную выходную точку с возможным преобразованиями «файла». Можно указать размеры входного и выходного блока в байтах.

Основные опции:

if= задает путь входа
of= задает путь вывода

Пример 1

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

Эта команда сделает точную копию жесткого диска /dev/sda на диск /dev/sdb

Пример 2

#dd if=/dev/dvd of=dvd.iso

Эта команда сделает копию DVD в файл dvd.iso

Пример 3

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

Эта команда заполнит раздел диск /dev/sda нулями, уничтожит с него все данные.

Пример 4

# dd if=/dev/hda | gzip > hda.img.gz

Эта команда сделает точную копию /dev/hda через утилиту сжатия GZIP.

Размеры блока и число блоков

С командой DD можно использовать также 2 важных параметра:

bs= установить на вход и выход размер блока
count= копировать только n входных блоков

Пример 5

# dd if=/dev/zero of=/dev/null bs=1M count=32768
32768+0 records in
32768+0 records out
34359738368 bytes (34 GB) copied, 2.64483 s, 13.0 GB/s

Эта команда показывает пропускную способность процессора/памяти в Гбайт/с

Пример 6

#dd if=/dev/sda of=/home/sam/MBR.image bs=512 count=1

Эта команда создает образ MBR (master boot record) (в том числе и таблицы разделов).

Пример 7

#dd if=/dev/zero bs=1024 count=1000000 of=/home/sam/1Gb.file
#dd if=/home/sam/1Gb.file bs=64k | dd of=/dev/null

Эти команды могут использоваться чтобы сделать тестирование (проанализировать производительность чтения и производительность записи для 1024-байтовых блоков).

Seek и Skip

Эти две опции используются намного реже, но могут быть полезны для выполнения конкретных задач.

skip= пропускает n блоков от начала входного файла, а затем копирует указанное количество блоков.
Seek= пропускает в выходном файле n блоков, прежде чем начать туда запись.

Пример 8

#dd if=/dev/mem bs=1k skip=768 count=256 2>/dev/null | strings -n 8

Эта команда отображения информацию BIOS, читает память от C:0000 до F:FFFF.

Пример 9

#dd bs=1k if=image.nrg of=image.iso skip=300

Эта команда конвертирует образ формата Nero в ISO удаляя 300k ненужных данных из заголовка формата nrg.


http://itbuben.org/blog/Unix-way/1294.html

Обновлено: 13.03.2015