dd

Материал из свободной русской энциклопедии «Традиция»
Перейти к навигации Перейти к поиску

dd — программа Unix предназначенная для копирования и конвертации файлов.

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

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

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

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

  • if=файл - читает данные из файла вместо стандартного ввода.
  • of=файл - пишет данные в файл вместо стандартного вывода.
  • bs=n — размер блока
  • ibs=nn и obs=nn — задает, сколько байтов нужно считывать или записывать за раз
  • count=n — сколько блоков скопировать
  • skip=n — сколько блоков от начала файла пропустить перед началом копирования
  • conv=фильтр,фильтр — применить фильтры конвертациии.

Фильтры[править | править код]

  • ascii — сконвертировать в ASCII из EBCDIC
  • ebcdic — … и наоборот
  • block — выравнивание блоков
  • lcase — преобразовать к нижнему регистру
  • ucase — преобразовать к верхнему регистру
  • swab — менять местами пары байт
  • noerror — игнорировать ошибки ввода-вывода.

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

  • dd if=foo of=bar
    • скопировать файл foo в файл bar
  • dd if=foo of=/dev/stout bs=128 count=2
    • вывести на экран (в /dev/stdout) первые 256 байт файла foo
  • dd if=/dev/cdrom of=backup.iso bs=65535 conv=noerror
    • сделать image компакт-диска, используя большой размер блока. Игнорировать ошибки.
  • dd if=/dev/zero of=/dev/sdg bs=65535
    • уничтожить содержимое устройства /dev/sdg, заполнив его «нулями» из /dev/zero
  • dd if=/dev/hda of=bootloader.mbr bs=512 count=1
    • сделать копию главной загрузочной записи первого жесткого диска
  • (dd bs=4k skip=1 count=0 && dd bs=512k) <$disk >$tape
    • Копировать все, кроме метки, с диска на ленту
  • (dd bs=4k seek=1 count=0 && dd bs=512k) <$tape >$disk
    • Копировать все, не перезаписывая метку, с ленты на диск

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

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