Утилита DD

Параметры

if=/dev/sdx	Исходное устройство (флешка, диск, файл)
of=/path/file	Устройство назначения (куда сохранять данные: файл, диск)
bs=N	Размер блока в байтах (K,M). Какими блоками будут считываться/записываться данные.
  4М	- для больших дисков (4M, 8М, 16М, 32M)
  1M	- диски небольших размеров (до 30 ГБ). Оптимально для флешек.
  Для винтов наверное 16М–32М. Для флешек по идее 1М достаточно.
count=N	Количество блоков для копирования
conv=
  noerror	игнорировать ошибки ввода-вывода
  sync,noerror	не читать ошибочный блок, но записывать данные (чтобы размер блока не менялся)
ibs=N	Сколько байт считывать за раз
obs=N	Сколько байт записывать за раз
skip=N	Пропустить N блоков при чтении от начала файла источника
seek=N	Пропустить N блоков при записи от начала в результирующем файле

Советы и рекомендации

Перед бекапом запустить утилиту df и убедится что раздел(ы) не примонтирован на запись!

При восстановлении дампа по сети НЕ использовать опцию conv=sync,noerror! Иначе это может исказить записываемые данные, ибо позволяет dd не дожидаться данных, приходящих по сети, если целый блок недоступен.

Для ускорения бекапа можно установить параметр bs = размеру кеша диска (8M,16M,32M)

Для внешнего винта задавать размер блока больше 2М бессмысленно

Примеры

Сохранить MBR (параметр bs=512 можно опустить):

dd if=/dev/sdb of=grub2.mbr count=1

MBR расположена в первых 512 байтах жесткого диска. MBR состоит из: таблицы разделов и загрузчика

Востановить MBR:

dd if=grub2.mbr of=/dev/sdb

Клонировать диск:

dd if=/dev/sda of=/dev/sdb bs=4096

Создать ISO-образ игнорируя ошибки чтения:

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

Создать образ флешки:

dd if=/dev/sdb of=/home/user/flash.image bs=1M

Размер результирующего файла-дампа будет равен размеру носителя, а не занятому пространству

Создать точную копию диска с последующей архивацией образа:

cat /dev/hda | gzip -9 > /home/user/backup/hda.img.gz

можно проще:

cat /dev/hda > /home/user/backup/hda.img

Создать бекап диска со сжатием GZip:

dd if=/dev/hda conv=sync,noerror bs=64K | gzip -c > /mnt/sda1/hda.dd.img.gz

Развернуть бекап:

gzip -x /mnt/sda1/hda.dd.img.gz | dd of=/dev/hda conv=sync,noerror bs=64K 

Создать бекап диска со сжатием GZip + сохранение на сервере чз SSH

dd if=/dev/hda conv=sync,noerror bs=64K | gzip -c | ssh -c blowfish user@hostname "dd of=hda.dd.img.gz bs=64k"

Развернуть:

dd if=hda.dd.img.gz | ssh -c blowfish user@deadhost "gunzip -c | dd of=/dev/hda1 bs=64k"

Дамп данных со сплитом:

dd if=/dev/hdb1 | gzip | split -d -b 2G hdb1.dd.img

Вывести на экран первые 512 байт файла:

dd if=grub.mbr of=/dev/stdout bs=256 count=2

Вывести данные бинарного файла в HEX:

dd if=grub2.mbr | hexdump -C

или так:

dd if=grub2.mbr bs=1 count=10 2 > /dev/null | hexdump


Подробнее

os/linux/dd.txt · Последние изменения: 2012-06-13 19:11 (внешнее изменение)