dd

Материал из Википедии — свободной энциклопедии

Перейти к: навигация, поиск

dd (от англ. disk dump - дамп диска)— программа Unix, предназначенная как для копирования, так и для конвертации файлов.

Содержание

[править] Введение

Поскольку в Unix очень многие объекты являются файлами, спектр применения dd гораздо более широк, чем кажется на первый взгляд. Регулярно возникает необходимость не просто скопировать файл или несколько файлов (с чем прекрасно справляется cp), но скопировать первые n байт файла, пропустить m байт от начала, прочитать файл с дефектного носителя, транслировать содержимое файла в ASCII, «развернуть» порядок байт в файле (Little-Endian vs. Big-Endian), просто скопировать очень большой файл или все вместе взятое. Для этой цели и служит dd.

[править] Некоторые параметры

При написании статьи были использованы материалы man dd, описывающие версию dd от GNU. Версии dd на других операционных системах могут отличаться.

[править] Базовые параметры

  • if=файл — читает данные из файла вместо стандартного ввода.
  • of=файл — пишет данные в файл вместо стандартного вывода.
  • bs=n — размер блока
  • ibs=nn и obs=nn — задаёт, сколько байтов нужно считывать или записывать за раз
  • count=n — сколько блоков скопировать
  • skip=n — сколько блоков от начала файла пропустить перед началом копирования
  • conv=фильтр,фильтр — применить фильтры конвертациии.
  • ascii — сконвертировать в ASCII из EBCDIC
  • ebcdic — … и наоборот
  • block — выравнивание блоков
  • lcase — преобразовать к нижнему регистру
  • ucase — преобразовать к верхнему регистру
  • swap — менять местами пары байт
  • noerror — игнорировать ошибки ввода-вывода.

[править] Примеры использования

Скопировать файл foo в файл bar:

dd if=foo of=bar

Скопировать файл foo в файл bar, пропустив первые 10 Кбайт из файла foo:

dd if=foo of=bar bs=1k skip=10

Порезать 10Мбайтный файл foo на 2 по 5Мбайт:

dd if=foo of=bar.0 bs=1M count=5
dd if=foo of=bar.1 bs=1M skip=5

Склеить пять 100-мегабайтных файлов в один:

dd if=SMILE.001 of=SMILE  bs=1M seek=0
dd if=SMILE.002 of=SMILE  bs=1M seek=100
dd if=SMILE.003 of=SMILE  bs=1M seek=200
dd if=SMILE.004 of=SMILE  bs=1M seek=300

Вывести на экран (в /dev/stdout) первые 256 байт файла foo:

dd if=foo of=/dev/stdout bs=128 count=2

или:

dd if=foo bs=128 count=2

Предыдущая команда годится только для просмотра текстового файла.
Содержимое бинарного файла рекомендуется смотреть так:

dd if=foo bs=1 count=10 2>/dev/null|hexdump 

Сделать image компакт-диска/DVD, используя большой размер блока. Игнорировать ошибки:

dd if=/dev/cdrom of=backup.iso bs=65535 conv=noerror

Для создания образа компакт-диска/DVD, лучше использовать команду readcd из стандартного пакета cdrecord:

readcd dev=/dev/cdrom f=backup.iso

Уничтожить содержимое устройства /dev/sdg, заполнив его «нулями» из /dev/zero:

dd if=/dev/zero of=/dev/sdg bs=65535

Сделать копию главной загрузочной записи первого жёсткого диска:

dd if=/dev/hda of=bootloader.mbr bs=1 count=512

Копировать всё, кроме метки, с диска на ленту:

(dd bs=4k skip=1 count=0 && dd bs=512k) <$disk >$tape

Копировать всё, не перезаписывая метку, с ленты на диск:

(dd bs=4k seek=1 count=0 && dd bs=512k) <$tape >$disk

Узнать статус выполнения операции:

killall -USR1 dd

[править] См. также

[править] Ссылки

Источник — «http://ru.wikipedia.org/wiki/Dd»