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=фильтр,фильтр — применить фильтры конвертациии.
ФильтрыПравить
Примеры использованияПравить
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 на других операционных системах могут отличаться от вышеописанной.