- dd
-
Для этой статьи не заполнен шаблон-карточка {{Карточка программы}}. Вы можете помочь проекту, добавив его.В этой статье слишком короткое вступление. Пожалуйста, дополните вводную секцию, кратко раскрывающую тему статьи и обобщающую её содержимое.dd (dataset definition) — программа UNIX, предназначенная как для копирования, так и для конвертации файлов. Название унаследовано от оператора DD (Dataset Definition) из языка JCL
Содержание
Введение
Поскольку в UNIX очень многие объекты являются файлами, спектр применения dd гораздо шире, чем кажется на первый взгляд. Регулярно возникает необходимость не просто скопировать файл или несколько файлов (для чего предназначена утилита cp), а скопировать первые n байт файла, пропустить m байт от начала, прочитать файл с дефектного носителя, транслировать содержимое файла в ASCII, «развернуть» порядок байт в файле (Little-Endian vs. Big-Endian),[1] просто скопировать очень большой файл или все вместе взятое. Для этой цели и служит dd.
Кроме всего прочего, данная утилита позволяет скопировать регионы из файлов «сырых» устройств, например, сделать резервную копию загрузочного сектора жёсткого диска, или прочитать фиксированные блоки данных из специальных файлов, таких, как /dev/zero или /dev/random.[2]
Название утилиты dd иногда в шутку расшифровывают, как «disk destroyer», «data destroyer» или «delete data», так как утилита позволяет производить низкоуровневые операции на жёстких дисках — при малейшей ошибке, такой, как реверс параметров if и of, можно потерять часть данных на диске (или даже все данные)[1].
Некоторые параметры
При написании статьи были использованы материалы man dd, описывающие версию dd от GNU. Версии dd на других операционных системах могут отличаться.
Базовые параметры
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-дисками и образами
Создать образ CD/DVD, используя большой размер блока. Игнорировать ошибки:
dd if=/dev/cdrom of=backup.iso bs=65536 conv=noerror
Записать ISO-образ «image.iso» на устройство sdb вместе с его загрузочным сектором и форматированием раздела в файловую систему образа (как правило, ISO 9660 или UDF):
dd if=image.iso of=/dev/sdb
Работа с файлами
Скопировать файл 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 {1..4}; do dd if=SMILE.00$i >> SMILE done
Примеры выше показывают возможности dd, на практике, обычно, используется cat
cat SMILE.00{1,2,3,4} > 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
Резервное копирование и удаление данных
Скопировать один раздел жёсткого диска на другой жёсткий диск, игнорируя ошибки ввода-вывода:
dd if=/dev/sda1 of=/dev/sdb2 bs=4096 conv=noerror
Сделать копию главной загрузочной записи (MBR) первого жёсткого диска:
dd if=/dev/hda of=bootloader.mbr bs=512 count=1
Просмотреть содержимое главной загрузочной записи (MBR) первого жёсткого диска:
dd if=/dev/sda bs=512 count=1 | hexdump -C
Копировать всё, кроме метки, с диска на магнитную ленту:
(dd bs=4k skip=1 count=0 && dd bs=512k) <$disk >$tape
Копировать всё, не перезаписывая метку, с магнитной ленты на диск:
(dd bs=4k seek=1 count=0 && dd bs=512k) <$tape >$disk
Уничтожить содержимое устройства /dev/sdg, заполнив его «нулями» из /dev/zero:
dd if=/dev/zero of=/dev/sdg bs=65535
Узнать статус выполнения операции:
killall -USR1 dd
Варианты dd, ориентированные на восстановление
Программы с открытым исходным кодом для восстановления включают dd_rescue и dd_rhelp, которые работают вместе, savehd7 и GNU ddrescue.
Antonio Diaz Diaz (разработчик GNU ddrescue) сравнивает[3] варианты dd для задач восстановления:
Стандартная утилита dd осуществляет линейное чтение диска, и это может занять много времени или даже сжечь накопитель без восстановления чего-либо, если ошибки расположены вначале жесткого диска. dd_rescue делает то же самое, что и dd, только более эффективно. dd_rhelp — это сложный shell-скрипт, который запускает dd_rescue много раз, стараясь стратегически копировать накопитель, но это очень неэффективно.
- dd_rhelp сначала извлекает все доступные к чтению данные и сохраняет их в файл, вставляя нули вместо байтов, которые не смог прочесть. Потом утилита пытается повторно прочитать некорректные данные и обновить этот файл.
- GNU ddrescue может быть использована для копирования данных прямо на новый диск по необходимости, как и dd.
См. также
Примечания
- ↑ 1 2 Sam Chessman How and when to use the dd command?. CodeCoffee. Архивировано из первоисточника 21 января 2012. Проверено 19 февраля 2008.
- ↑ Dd - LQWiki. LinuxQuestions.org. Архивировано из первоисточника 21 января 2012. Проверено 19 февраля 2008.
- ↑ Interview With GNU DDRescue's Antonio Diaz Diaz. Blue-GNU. Архивировано из первоисточника 15 апреля 2008. Проверено 6 декабря 2008.
Ссылки
dd(1)
— страница справки man по пользовательским командам GNU/Linux (англ.)- dd: Команда, которая не похожа на другие
- Реализация dd под Windows
Команды Unix POSIX.1-2008 Утилиты POSIX.1-2008 admin • alias • ar • asa • at • awk • basename • batch • bc • bg • c99 • cal • cat • cd • cflow • chgrp • chmod • chown • cksum • cmp • comm • command • compress • cp • crontab • csplit • ctags • cut • cxref • date • dd • delta • df • diff • dirname • du • echo • ed • env • ex • expand • expr • false • fc • fg • file • find • fold • fort77 • fuser • gencat • get • getconf • getopts • grep • hash • head • iconv • id • ipcrm • ipcs • jobs • join • kill • lex • link • ln • locale • localedef • logger • logname • lp • ls • m4 • mailx • make • man • mesg • mkdir • mkfifo • more • mv • newgrp • nice • nl • nm • nohup • od • paste • patch • pathchk • pax • pr • printf • prs • ps • pwd • qalter • qdel • qhold • qmove • qmsg • qrerun • qrls • qselect • qsig • qstat • qsub • read • renice • rm • rmdel • rmdir • sact • sccs • sed • sh • sleep • sort • split • strings • strip • stty • tabs • tail • talk • tee • test • time • touch • tput • tr • true • tsort • tty • type • ulimit • umask • unalias • uname • uncompress • unexpand • unget • uniq • unlink • uucp • uudecode • uuencode • uustat • uux • val • vi • wait • wc • what • who • write • xargs • yacc • zcat GNU Coreutils Файловые утилиты chgrp • chown • chmod • cp • dd • df • dir • dircolors • install • ln • ls • mkdir • mkfifo • mknod • mv • rm • rmdir • shred • sync • touch • vdir Текстовые утилиты cat • cksum • comm • csplit • cut • expand • fmt • fold • head • join • md5sum • nl • od • paste • ptx • pr • sha1sum • sort • split • sum • tac • tail • tr • tsort • unexpand • uniq • wc Shell-утилиты basename • chroot • date • dirname • du • echo • env • expr • factor • false • groups • hostid • id • link • logname • nice • nohup • pathchk • pinky • printenv • printf • pwd • readlink • seq • sleep • stat • stty • tee • test • true • tty • uname • unlink • users • who • whoami • yes Форматы архивов (сравнение по типу) Только архивирование Только сжатие Архивирование и сжатие Упаковка и распространение ПО Категории:- Программное обеспечение для работы с файловыми системами оптических дисков
- Свободное программное обеспечение для работы с файловыми системами оптических дисков
- Утилиты UNIX
Wikimedia Foundation. 2010.