Несколько примеров работы с dd Ubuntu

Posted by

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

dd [—help] [—version] [if=файл] [of=файл] [ibs=байты] [obs=байты] [bs=байты] [cbs=байты] [skip=блоки] [seek=блоки] [count=блоки] [conv={ascii, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync}]

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

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

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

 

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

dd if=image.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

или же (для сбора файла из большого количества кусков):

for i in $(seq 1 4); do
dd if=SMILE.00$i >> SMILE
done

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

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

  •  Скопировать один раздел жёсткого диска на другой жёсткий диск, игнорируя ошибки ввода-вывода:

dd if=/dev/sda1 of=/dev/sdb2 bs=4096 conv=noerror

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

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 skip=1 count=0 && dd bs=512k) <$disk >$tape

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

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

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

killall -USR1 dd

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

шестнадцать − тринадцать =