Dd

Dd

dd

dd (англ. dataset definition — oпределение набора данных) — программа 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 — сколько блоков скопировать.
  • seek=n — сколько блоков пропустить от начала в результрующим файле.
  • skip=n — сколько блоков от начала файла пропустить перед началом копирования.
  • conv=фильтр,фильтр — применить фильтры конвертациии.
  • ascii — сконвертировать в ASCII из EBCDIC
  • ebcdic — … и наоборот.
  • block — выравнивание блоков.
  • lcase — преобразовать к нижнему регистру.
  • ucase — преобразовать к верхнему регистру.
  • swap — менять местами пары байт.
  • noerror — игнорировать ошибки ввода-вывода.

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

Распаковать ISO-образ "obraz.iso" в папку "/home/root/exISO":

    dd if=obraz.iso of=/home/root/exISO/

Записать ISO-образ "obraz.iso" на раздел sdb1 вместе с его загрузочным сектором и форматированием раздела в файловую систему образа (как правило, ISO 9660(еще называют isofs) или UDF):

    dd if=obraz.iso of=/dev/sdb1

Скопировать файл 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

а можно и так:

    dd if=SMILE.001 > SMILE
    dd if=SMILE.002 >> SMILE
    dd if=SMILE.003 >> SMILE
    dd if=SMILE.004 >> SMILE


Вывести на экран (в /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

См. также

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать курсовую

Полезное



Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»