Linux dd команда описание

1. Введение

1.1. Почему dd?

Мы выбрали dd как первого соискателя в нашей серии, потому что это очень полезная утилита, имеющая, как вы увидите ниже, множество опций. Это делает ее практически швейцарским армейским ножом в мире Linux.

2. Общепринятое использование

Перед тем, как начать, мы хотим выяснить, для чего в целом предназначена dd. Во-первых, ее название происходит от "data duplicator", но в шутку ее еще расшифровывают как "disk destroyer" или "data destroyer", потому что это очень мощная утилита. Поэтому мы рекомендуем использовать ее очень аккуратно, так как малейшая неосторожность может стоить вам всех ваших данных. Синтаксис dd выглядит следующим образом:

Входными и выходными данными могут быть диски, разделы, файлы, устройства. практически все, с чего можно считывать информацию, и куда ее можно записывать. Как вы увидите ниже, с помощью dd можно также пересылать данные, например, по локальной сети. Вы можете использовать входную часть команды, или только выходную, а в некоторых случаях могут отсутствовать обе части. Все это будет проиллюстировано в представленной ниже таблице.

Зачастую сисадмины во время работы копируют разнообразные двоичные данные. К примеру, это может быть необходимо в том случае, когда надо создать резервную копию всего жесткого диска. Копирование двоичных файлов может понадобиться при создании пустого файла, который заполняется нулями в целях организации пространственной подкачки или виртуальной файловой систематизации.

Чтобы решить вышеописанные задачи в максимально сжатые сроки, нужно воспользоваться специальной программой dd Linux. Она копирует информацию из одного места в другое, использует при этом двоичные уровни. Утилита способна скопировать как раздел на диске, так и жесткий диск целиком. Стоит максимально подробно рассмотреть особенности команды dd Linux, ее основные функции и показатели. В статье будет рассказано, как управлять утилитой.

Принцип работы dd Linux

Изначально требуется понять, что представляет собой эта утилита и как она работает. Иными словами, dd Linux – это утилита для копирования данных СР. Нужно заметить, что она используется только для блочного типа информации. Команда способна перенести в пределах одного блока данные, имеющие предварительно выбранный размер, а также информацию из одного места в иное. В ОС Linux устройства являются файлами. У пользователя имеется возможность перенаправлять устройства в файлы, а также совершать операции в обратном порядке.

Утилита имеет большое количество параметров, способных повлиять на размер используемого блока. Такая особенность сильно влияет на скорость работы самой программы. Приложение dd Linux отличается хорошей функциональностью.

Синтаксис

У данной утилиты странный и слегка сложный синтаксис. Несмотря на это, он весьма прост. Пользоваться программой легко, вы быстро запомните алгоритм и привыкнете к нему.

dd if=[что копировать] of=[куда копировать] параметры

С использованием параметра «if» потребуется прописать что копировать (источник). В "of" можно написать файл или устройство, например флешку или HDD диск.

  • «bs» — количество байт, которые будут читаться и записываться за один раз.
  • «cbs» — число байт, записываемых за один раз.
  • «count» — число скопированных блоков. Размер блока прописывается в опции «bs».
  • «ibs» — чтение определенного числа байт за 1 раз.
  • «obs» — записывание определенного числа байт за 1 раз.
  • «seek» — пропуск определенного числа байт в самом начале устройства во время чтения.
  • «skip» — пропуск определенного числа байт в самом начале при выводе.
  • «status» — подробность вывода.
  • «iflag», «oflag» — создание дополнительных флагов, которые нужны для ввода или вывода.
  • —help — показывает справку.
  • —version — показывает информацию о версии утилиты.
Читайте также:  Толщина и высота одно и тоже

Выше описаны наиболее популярные функции, которые могут потребоваться вам при использовании программы dd Linux.

Примеры

Утилита чаще всего применяется для формирования образов DVD- и CD-дисков. Для их сохранения в виде образа iso существуют определенные команды. Чтобы программа не реагировала на ошибки, можно запустить фильтр noerror. Далее создается образ, который в последующем сохраняется на диск.

Чтобы сделать образ, узнаем разметку диска, с помощью dh.

Сделаем образ раздела /home, файловая разметка /dev/sda6 в каталог /root/home.iso. В качестве аргумента укажем "noerror" — не выдавать ошибки. Также ограничим максимальный размер файла на 4096 байт.

dd if=/dev/sda6 of=/root/home.iso bs=4096 conv=noerror

Таким образом делаются образы жестких дисков, флешек, оптических приводов.

Как видно из примера выше, в каталоге /root появился файл home.iso. В дальнейшем его можно развернуть. Он позволит восстановить испорченную в ходе использования систему, в нашем случае файлы каталога home.

Весьма полезный параметр – «bs». Он в значительной мере влияет на скорость работы самой программы. Этот аргумент дает возможность установить размер блока во время передачи информации. Предварительно задается цифровое значение, где указывается один из модификаторов.

Как было сказано выше, dd Linux позволяет записать информацию на диск или в определенный раздел именно в двоичном виде. В этом случае записываются как нули, так и единицы. Для очистки диска достаточно наполнить его нулями.

Создадим образ диска. Пусть /dev/cdrom1 это наш оптический привод, cdrom.

# dd if=/dev/cdrom1 of=/home/samba/disk/obraz.iso

Программа является практически незаменимым инструментом для эффективной работы системного администратора. С использованием данной программы можно создавать копию всей системы. Команда весьма полезна, имеет множество сфер применения.

Довольно часто системным администраторам приходится копировать различные двоичные данные. Например, иногда может понадобиться сделать резервную копию жесткого диска, создать пустой файл, заполненный нулями для организации пространства подкачки или другой виртуальной файловой системы.

Для решения всех этих задач используется утилита dd linux, которая просто выполняет копирование данных из одного места в другое на двоичном уровне. Она может скопировать CD/DVD диск, раздел на диске или даже целый жесткий диск. В этой статье мы рассмотрим что из себя представляет команда dd linux, основные ее опции и параметры, а также как ею пользоваться.

Читайте также:  Источник бесперебойного питания для компьютера это

Как работает команда dd?

Сначала нужно понять как работает команда dd и что она делает. Фактически, это аналог утилиты копирования файлов cp только для блочных данных. Утилита просто переносит по одному блоку данных указанного размера с одного места в другое. Поскольку в Linux все, в том числе, устройства, считается файлами, вы можете переносить устройства в файлы и наоборот.

С помощью различных опций утилиты можно повлиять на размер блока, а это, в свою очередь, уже влияет на скорость работы программы. Дальше мы рассмотрим основные опции утилиты и ее возможности.

Команда dd

Синтаксис утилиты достаточно необычен, но в то же время очень прост, после того как вы его запомните и привыкнете:

$ dd if= источник_копирования of= место_назначения параметры

С помощью параметра if вам нужно указать источник, откуда будут копироваться блоки, это может быть устройство, например, /dev/sda или файл — disk.img. Дальше, с помощью параметра of необходимо задать устройство или файл назначения. Другие параметры имеют такой же синтаксис, как if и of.

Теперь давайте рассмотрим дополнительные параметры:

  • bs — указывает сколько байт читать и записывать за один раз;
  • cbs — сколько байт нужно записывать за один раз;
  • count — скопировать указанное количество блоков, размер одного блока указывается в параметре bs;
  • conv — применить фильтры к потоку данных;
  • ibs — читать указанное количество байт за раз;
  • obs — записывать указанное количество байт за раз;
  • seek — пропустить указанное количество байт в начале устройства для чтения;
  • skip — пропустить указанное количество байт в начале устройства вывода;
  • status — указывает насколько подробным нужно сделать вывод;
  • iflag, oflag — позволяет задать дополнительные флаги работы для устройства ввода и вывода, основные из них: nocache, nofollow.

Это были все основные опции, которые вам могут понадобиться. Теперь перейдем ближе к практике и рассмотрим несколько примеров как пользоваться утилитой dd linux.

Как пользоваться dd?

Обычные пользователи используют команду dd чаще всего для создания образов дисков DVD или CD. Например, чтобы сохранить образ диска в файл можно использовать такую команду:

sudo dd if=/dev/sr0 of=

/CD.iso bs=2048 conv=noerror

Фильтр noerror позволяет отключить реагирование на ошибки. Дальше, вы можете создать образ жесткого диска или раздела на нем и сохранить этот образ на диск. Только смотрите не сохраните на тот же жесткий диск или раздел, чтобы не вызвать рекурсию:

В вашей домашней папке будет создан файл с именем disk1.img, который в будущем можно будет развернуть и восстановить испорченную систему. Чтобы записать образ на жесткий диск или раздел достаточно поменять местами адреса устройств:

Читайте также:  Деревня разбор по составу

Очень важная и полезная опция — это bs. Она позволяет очень сильно влиять на скорость работы утилиты. Этот параметр позволяет установить размер одного блока при передаче данных. Здесь нужно задать цифровое значение с одним из таких модификаторов формата:

  • с — один символ;
  • b — 512 байт;
  • kB — 1000 байт;
  • K — 1024 байт;
  • MB — 1000 килобайт;
  • M — 1024 килобайт;
  • GB — 1000 мегабайт;
  • G — 1024 мегабайт.

Команда dd linux использует именно такую систему, она сложная, но от этого никуда не деться. Ее придется понять и запомнить. Например, 2b — это 1 килобайт, и 1k, это тоже 1 килобайт, 1М — 1 мегабайт. По умолчанию утилита использует размер блока — 512 байт. Например, чтобы ускорить копирование диска можно брать блоки размером по 5 мегабайт. Для этого применяется такая команда:

Следующий параметр — это count. С помощью него можно указать сколько блоков необходимо скопировать. Например, мы можем создать файл размером 512 мегабайт, заполнив его нулями из /dev/zero или случайными цифрами из /dev/random:

sudo dd if=/dev/zero of=file.img bs=1M count=512

Обратите внимание, что этот параметр указывает не размер в мегабайтах, а всего лишь количество блоков. Поэтому, если вы укажите размер блока 1b, то для создания файла размером 1Кб нужно взять только два блока. С помощью этого параметра также можно сделать резервную копию таблицы разделов MBR. Для этого скопируем в файл первые 512 байт жесткого диска:

sudo dd if=/dev/sda of=mbr.img bs=1b count=1

Для восстановления используйте обычную команду развертывания образа на диск.

Если образ диска слишком большой, можно перенаправить весь вывод нестандартный поток вывода утилиты gzip:

dd if =/dev/sda2 | bzip2 disk.img.bz2

Также можно использовать утилиту dd linux для копирования файлов, хотя это и не является ее прямым предназначением:

dd if=/home/sergiy/test.txt of=/home/sergiy/test1.txt

Как вы знаете, команда dd linux пишет данные на диск непосредственно в двоичном виде, это значит, что записываются нули и единицы. Они переопределяют то, что было раньше размещено на устройстве для записи. Поэтому чтобы стереть диск вы можете просто забить его нулями из /dev/zero.

sudo dd if=/dev/zero of=/dev/sdb

Такое использование dd приводит к тому что весь диск будет полностью стерт.

Выводы

В этой статье мы рассмотрели как пользоваться dd linux, для чего можно применять эту утилиту и насколько она может быть полезной. Это почти незаменимый инструмент системного администратора, поскольку с помощью нее можно делать резервные копии целой системы. И теперь вы знаете как. Если у вас остались вопросы, спрашивайте в комментариях!