Создание образа жесткого диска при помощи утилиты dd. Создание образа жесткого диска при помощи утилиты dd в Unix Что такое dd образ

THE BELL

Есть те, кто прочитали эту новость раньше вас.
Подпишитесь, чтобы получать статьи свежими.
Email
Имя
Фамилия
Как вы хотите читать The Bell
Без спама

Решил на днях создать образ своих рабочих, загрузочных флешек с разными операционными системами. Как создавать эти мульти-загрузочные флешки, я уже в одной из своих статей. Поможет нам, в создании образов, старая и проверенная временем программа dd . Насколько я знаю, то утилита dd должна быть установлена в системе по умолчанию. Для создания образа Вашей «флешки», выполним в Терминале следующую команду:

sudo dd if=/dev/sdc of=image.iso

/dev/sdc — это Ваша флешка,

image.iso — это образ с именем image и расширением .iso, который появится в Вашей домашней папке.

Чтобы узнать, как обозначается Ваша флешка в системе, можно к примеру запустить утилиту Диски, или программу GParted и посмотреть в них, а если через Терминал, то поможет команда:

sudo fdisk -l

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

sudo apt-get install dcfldd

Сотрудники лаборатории DoD Computer Forensics Laboratory (DCFL) внесли некоторые изменения в команду dd, тем самым улучшив ее и применяя в своих исследовательских работах. В итоге на свет появилась команда dcfldd, которая обеспечивает хеширование копируемых данных через некоторые промежутки времени для их аутентификации. Более того, dcfldd работает гораздо быстрее, чем dd. Теперь, если Вы хотите именно видеть прогресс копирования, либо создания образа, Вам нужно выполнить команду:

sudo dcfldd if=/dev/sdc of=image.iso

Теперь, когда образ готов, можно создать новую, загрузочную флешку. Вставим вместо флешки с системами, новую, пустую. Думаю, что она определится системой так же, как и первая — sdc, но лучше перепроверить. Теперь команда будет такой:

sudo dd if=image.iso of=/dev/sdc

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

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

По этой схеме можно копировать, создавать образы не только флешек, но и жестких дисков целиком, либо их разделов, CD/DVD дисков и т.д. Но об этом в следующей статье.

Выбор flash-накопителей остается только за вами. Можно записать загрузочный образ на обычные флешки, от известных брендов: Transcend, Kingston, Apacer, Silicon Power и других производителей, а можно немного отличиться и выбрать для себя ювелирные флешки со стразами, бриллиантами и другими украшениями. Хотя это конечно же будет выбор прекрасной половины человечества. Хотя на работу, записанного образа, внешний вид устройства не влияет абсолютно.

Это настраиваемый параметр, определяющий тип и применение создаваемого загрузочного диска на USB-носителе.

В утилите Rufus доступны четыре метода загрузки, один из которых следует выбрать из выпадающего списка. В списке они обозначены как MS-DOS, FreeDOS, ISO-образ, DD-образ. Первые два доступны только для компьютеров и устройств, имеющих BIOS – их нужно выбрать из выпадающего списка в строке «Схема раздела и тип системного интерфейса».

Такой метод загрузки в Rufus создаёт загрузочную флешку с операционной системой MS-DOS. Это дисковая операционная система, которая может потребоваться в следующих случаях:

  • для обновления и перепрошивки BIOS, эту процедуру безопаснее выполнять из-под DOS;
  • для диагностики и тестирования компьютера или ноутбука, поскольку большинство утилит для глубокой диагностики оперативной памяти или жёсткого диска работают только под DOS;
  • если необходимо получить доступ к файлам на жёстком диске при отсутствующей или испорченной операционной системе;
  • при использовании старых консольных программ (например, для программирования периферийных устройств), которые под Windows могут работать некорректно;
  • если нужен доступ к файловой системе жёстких дисков компьютера или ноутбука на более низком уровне.

FreeDOS – операционная система, аналогичная MS-DOS, которая распространяется бесплатно на условиях свободной лицензии и доступна в Rufus. Также позволяет обновить BIOS, починить жёсткий диск при помощи специальных программ, тестировать оперативную память (RAM) и прочее. Действия производятся специальными командами из командной строки.

Метод загрузки ISO-образ следует выбирать для перенесения готового ISO-образа загрузочного диска на USB-накопитель. ISO-образ следует создать предварительно, воспользовавшись предназначенными для этого программами. Этот метод можно использовать в операционных системах Windows, Linux, и других. Полученный загрузочный диск можно затем использовать для аварийного восстановления операционной системы и средств диагностики жёстких дисков.

Метод загрузки DD-образ в Rufus

Используется для создания загрузочных дисков из образов, созданных в операционной системе Linux программой DD. Принципиальное отличие этого метода загрузки в том, что программа DD по сути не создаёт образ, а делает побитовую копию заданной директории.

Программа Rufus не является чем-то уникальным в области создания загрузочных носителей, главным её достоинством является простота пользования.

Создадим с помощью утилиты dd образ флешки с архивацией свободного места. Резервный образ пригодится, если вдруг внезапно перестанет работать оригинал с важной информацией. Например, флешка с закрытыми ключами электронных подписей руководства организации. Итак, у нас есть флешка /dev/sdd объемом 4ГБ, информация на которой занимает около 90МБ.
du - sh / run / media / aleksey / Transcend

89M /run/media/aleksey/Transcend

Все команды выполняются от имени пользователя root . Или в соответствующих дистрибутивах перед командами добавляйте sudo .
fdisk - l / dev / sdd

Disk /dev/sdd: 3.7 GiB, 3904897024 bytes, 7626752 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xc653eaa4 Device Boot Start End Sectors Size Id Type /dev/sdd1 2048 7628543 7626496 3.7G b W95 FAT32

Disk /dev/sdd: 3.7 GiB, 3904897024 bytes, 7626752 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disklabel type: dos

Disk identifier: 0xc653eaa4

Device Boot Start End Sectors Size Id Type

/dev/sdd1 2048 7628543 7626496 3.7G b W95 FAT32

Создав простой образ командой
dd if = / dev / sdd of = sdd . iso bs = 4M conv = noerror ,
мы обрекаем себя на хранение файла 4ГБ. А если бы флешка была емкостью 64ГБ? И не одна? Эту проблему нам поможет решить обычный архиватор, возьмем стандартный gzip .
dd if = / dev / sdd bs = 4M conv = noerror | gzip - c > sdd . iso . zip
где ключ -c позволяет работать со стандартным выводом.
После завершения работы посмотрим на получившийся файл. ls - al sdd*

Получился файл размером примерно 25МБ. Реальная экономия места на диске даже по сравнению с 4ГБ файлом!
Для восстановления флешки из образа используем обратный порядок команд.
gunzip - c sdd . iso . zip | dd of = / dev / sdd conv = noerror bs = 4M

Также можно архивировать образы жестких дисков, где объемы на порядок больше.

Кстати! Для наглядности процесса из-за отсутствия у dd своего прогресс-бара предлагаю использовать небольшую утилитку progress — Coreutils Progress Viewer. Установить её в Fedora не составит труда.
dnf install progress
Для других дистрибутивов нужный репозиторий можно найти по ссылке https://pkgs.org/download/progress .
Установив и запустив утилиту командой watch progress во втором терминале (в первом у нас работает архиватор и dd) от имени того же пользователя, увидим примерно такую картину.

man progress покажет Вам различные полезные ключи этой утилиты.

Команда dd выполняет всего одну простую функцию: копирует данные из файла в другой файл. Но поскольку в Linux многие сущности представлены именно как файлы, то и применений у dd становится много. Рассмотрим наиболее полезные из них.

А что значит dd?

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

Общий случай использования dd

Синтаксис команды следующий:

Dd if=$input_data of=$output_data

Команда скопирует данные из файла $input_data в файл $output_data, учитывая опции option. Казалось бы все просто. А теперь рассмотрим какие возможности открывает это простое копирование.

Примеры использования dd

1. Уничтожение всех данных на диске без возможности восстановления:

Dd if=/dev/urandom of=/dev/sda bs=4k

2. Полное побайтное копирование одного диска на другой (клонирование):

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

3. Копирование одного раздела в другой:

Dd if=/dev/sda3 of=/dev/sdb3 bs=4096 conv=notrunc,noerror

4. Отображение списка доступных файловых систем:

Dd if=/proc/filesystems | hexdump -C | less

5. Копирование данных на устройствах с разным размером блока (1Кб у источника и 2 Кб у приемника):

Dd if=/dev/st0 ibs=1024 obs=2048 of=/dev/st1

6. Создать загрузочную флешку:

Dd if=/home/$user/bootimage.img of=/dev/sdc

7. Проверить диск на сбойные сектора:

Dd if=/dev/sda of=/dev/null bs=1m

8. Создание резервной копии MBR диска и сохранение на дискету

Dd if=/dev/sda of=/dev/fd0 bs=512 count=1

9. Снятие образа ISO с компакт-диска:

Dd if=/dev/sr0 of=/home/$user/mycdimage.iso bs=2048 conv=nosync

10. Проверка файла на вирусы (разумеется, потребуется ClamAV):

Dd if=/home/$user/suspicious.doc | clamscan -

11. Сохранение содержимого ОЗУ в файл:

Dd if=/dev/mem of=/home/$user/mem.bin bs=1024

12. Конвертация образа из формата Nero NRG в стандартный образ ISO:

Dd bs=1k if=imagefile.nrg of=imagefile.iso skip=300k

13. Просмотр содержимого MBR:

Dd if=/dev/sda count=1 | hexdump -C

А где же обещанный миллион применений?

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

В комментариях с радостью принимаются ваши собственные примеры использования этой замечательной программы.

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

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

Сначала нужно понять как работает команда dd и что она делает. Фактически, это аналог утилиты только для блочных данных. Утилита просто переносит по одному блоку данных указанного размера с одного места в другое. Поскольку в 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 позволяет отключить реагирование на ошибки. Дальше, вы можете создать образ жесткого диска или раздела на нем и сохранить этот образ на диск. Только смотрите не сохраните на тот же жесткий диск или раздел, чтобы не вызвать рекурсию:

dd if=/dev/sda of=~/disk.img

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

dd if=~/disk.img of=/dev/sda

Очень важная и полезная опция - это 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 мегабайт. Для этого применяется такая команда:

dd if=/dev/sda of=~/disk.img bs=5M

Следующий параметр - это 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, для чего можно применять эту утилиту и насколько она может быть полезной. Это почти незаменимый инструмент системного администратора, поскольку с помощью нее можно делать резервные копии целой системы. И теперь вы знаете как. Если у вас остались вопросы, спрашивайте в комментариях!

THE BELL

Есть те, кто прочитали эту новость раньше вас.
Подпишитесь, чтобы получать статьи свежими.
Email
Имя
Фамилия
Как вы хотите читать The Bell
Без спама