Создание образа жесткого диска при помощи утилиты dd. Как записать iso-образ дистрибутива на флешку из терминала в Ununtu и производные Dd копирование
Будьте внимательны так как при ошибке в название флешки в команде dd можно повредить винчестер хоста.
Выведем обозначение разделов всех устройств
и найдем среди них флеш накопитель:
Sudo fdisk -u -l /dev/sd?
Так же, для определения разделов на всех устройства, можно воспользоваться командой:
Sudo cat /proc/partitions
Синтаксис команды dd
dd if=/AAAA of=/BBBB bs=CCCC count=DDDD conv=noerror- if : (input file) указывает на источник, т.е. на то, откуда копируем. Указывается файл, который может быть как обычным файлом, так и файлом устройства.
- of : (output file) указывает на файл назначения. То же самое, писать можем как в обычный файл, так и напрямую в устройство.
- bs : количество байт, которые будут записаны за раз. То есть размер куска данных, которые будут прочитаны и записаны за раз. рекомендуют ставить bs= размеру кеша винчестера т.е. 8M 16M 32M
- count : сколько кусков bs будет скопировано.
- conv: позволяет подключать фильтрs, применимых к потоку данных. Фильтр «noerror» как раз отключает остановку работы программы, когда наткнется на ошибку чтения.
Примеры
Полное стирание диска
Чтобы на носителе ничего нельзя было восстановить - можно забить его нулями, эта команда всегда закончиться ошибкой "на носителе кончилось место"
Dd if=/dev/zero of=/dev/sdX
Создание образа диска
dd if=/dev/cdrom of=image.iso conv=noerrorтак же можно в систему
Mount -o loop /PathToImageFile/image.iso /mnt/FolderMount
Если что-то не получается, процесс разбивается на 2 уровня:
Losetup -e /dev/loop0 /PathToImageFile/image.iso mount /dev/loop0 /mnt/FolderMount
Операции с MBR
MBR расположена в первых 512 байтах жесткого диска, и состоит из таблицы разделов, загрузчика и пары доп. байт. Иногда, ее приходится бекапить, восстанавливать и т.д. Бекап выполняется так:
Dd if=/dev/sda of=mbr.img bs=512 count=1
Восстановить можно проще:
Dd if=mbr.img of=/dev/sda
Копируем с архивированием
(используя gzip) данные с флешки на винчестера.
Dd if=/dev/sdX conv=sync,noerror bs=8M | gzip -c >/PathToSave/sdX.img.gz
и обратно
Gunzip -c /PathToFile/sdX.img.gz | dd of=/dev/sdX conv=sync,noerror bs=8M
Копируем по сети
dd if=/dev/sdX conv=sync,noerror bs=8M | ssh -c blowfish UserName@HostName "dd of=sdX.img.gz bs=8M"и обратно
Dd if=sdX.img.gz | ssh -c blowfish UserName@HostName "dd of=/dev/sdX bs=8М"
Команда 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 права суперпользователя, когда без этих прав можно обойтись.
В комментариях с радостью принимаются ваши собственные примеры использования этой замечательной программы.
    Rufus - бесплатное программное обеспечение с открытым исходным кодом для форматирования съемных USB-носителей данных и создания загрузочных дисков с различными операционными системами. Программа отличается простотой использования, высокой скоростью работы и поддерживает многоязычный интерфейс.
Скачать программу можно на сайте разработчика . На странице размещены ссылки для скачивания стандартной версии Rufus , и переносимой Rufus portable , которые ни чем не отличаются, кроме имени исполняемого файла и места хранения настроек. Настройки программы включают в себя используемый язык и параметры проверки обновлений. Стандартная версия хранит эти параметры в реестре, а переносимая – в файле rufus.ini каталога программы. Rufus не требует установки в системе – просто скачайте исполняемый файл и запустите его. Интерфейс программы очень прост:
В целом, программа Rufus не является чем-то уникальным в области средств для создания загрузочных носителей и главное ее достоинство – простота использования. Для того, чтобы создать загрузочную флэшку с ее помощью, достаточно иметь исходный образ загружаемой системы и уметь нажать на кнопку ”Старт”. Все выбираемые параметры и настройки, по умолчанию уже рассчитаны на использование программы для работы на компьютере стандартной конфигурации.
Наиболее просто и удобно использовать Rufus для создания загрузочной флэшки (загрузочного USB-диска) из ISO-образов установочных дисков Windows или Linux, а также дисков аварийного восстановления системы и средств диагностики.
При создании загрузочной флэшки Windows достаточно выбрать устройство, на которое будет выполняться запись и файл загрузочного iso-образа. Прочие параметры программа подставит сама.
Если в наличии нет файла с образом ISO, то его можно создать на базе физического компакт-диска (или из набора файлов дистрибутива) с помощью программ для записи CD/DVD, таких как известные Nero, Alcohol, или свободно распространяемых CDBurnerXP или ImgBurn .
Порядок создания загрузочной флэшки с Windows следующий:
выбрать флэшку, на которую будет записываться образ. В отличие от многих подобных программ, Rufus отображает метку тома, букву диска и его объем, поэтому при наличии нескольких съемных дисков в системе, легко выбрать тот, на который будет выполняться запись.
выбрать схему раздела и тип системного интерфейса. Rufus позволяет создавать флэшки для загрузки в интерфейсе обычного BIOS и для загрузки в среде UEFI, создавать загрузочные записи для томов MBR и томов GPT. По умолчанию принят режим "MBR для компьютеров с BIOS или UEFI" – наиболее распространенный на сегодняшний день режим для загрузочных флэшек.
выбрать файловую систему, которая будет использоваться на создаваемой загрузочной флэшке. По умолчанию, для загрузочных флэшек с Windows, используется файловая система FAT32 , но при необходимости, можно выбрать NTFS , если требуется использование файлов размером более 4 ГБ.
задать размер кластера. Размер кластера выбирается программой исходя из данных образа и типа файловой системы, но при необходимости, его можно изменить.
указать метку тома, которая будет задана для создаваемой флэшки.
задать параметры форматирования. Данные параметры лучше всего оставить по умолчанию и просто выбрать файл образа ISO. Для образов, созданных программой dd в Linux, нужно выбрать параметр DD-образ .
После нажатия кнопки Старт программа выполнит форматирование флэшки, установит признак активного раздела, запишет главную загрузочную запись и загрузочную запись раздела, а также данные загрузочного носителя из ISO-образа. После завершения работы Rufus можно выполнять загрузку с использованием полученной загрузочной флэшки.
Использование технологии виртуализации для тестирования загрузочных флэшек. Ссылки для скачивания бесплатных и удобных программ для упрощения процесса создания, отладки и проверки создаваемых загрузочных носителей.
dd
— простая утилита, которая входит в состав большинства Unix-подобных операционных систем — Linux, FreeBSD, Solaris и т.д.
Ее предназначение — чтение данных из одного устройства или файла и запись в другой.
dd можно эффективно использовать для создания образа жесткого диска, при этом обойдясь без коммерческих утилит вроде Acronis True Image или Norton Ghost.
Предположим, что у нас есть два диска:
- /dev/sda — диск, образ которого необходимо создать;
- /dev/sdb — диск на который будет записан образ.
При необходимости нужно подставить собственные значения.
Первым делом необходимо загрузиться с любого доступного Live-CD диска, имеющего утилиту dd, и войти в командную строку в качестве суперпользователя. Создаем точку монтирования для проведения резервного копирования.
mkdir /mnt/backup
Монтируем жесткий диск на который необходимо сохранить образ.
Создание образа жесткого диска
dd if=/dev/sda of=/mnt/backup/sda.img bs=8M conv=sync,noerror
- if=/dev/sda — копируем весь жесткий диск sda;
- of=/mnt/backup/sda.img — копируем в /mnt/backup/sda.img;
- bs=8M — задаем размер кэша жесткого диска для ускорения процедуры копирования (иначе данные будут сбрасываться малыми порциями по 512 байт);
- conv=sync,noerror — указываем dd на необходимость копирования по типу бит-в-бит с игнорированием ошибок чтения.
Для сокращения размера образа жесткого диска его можно сжать любым архиватором.
dd if=/dev/sda bs=8M conv=sync,noerror | gzip -c > /mnt/backup/sda.img
Восстановление образа жесткого диска
Для восстановления образа жесткого диска необходимо проделать процедуру обратную процедуре создания этого образа.
dd if=/mnt/backup/sda.img of=/dev/sda bs=8M conv=sync,noerror
При использовании сжатия параллельно необходимо разархивировать образ.
gunzip -c /mnt/backup/sda.img | dd of=/dev/sda conv=sync,noerror bs=8M
Миграция системы на другой жесткий диск
Для миграции всей системы на другой жесткий диск необходимо, в качестве цели назначения задать расположение нового диска.
dd if=/dev/sda of=/dev/sdb bs=8M conv=sync,noerror
После чего при необходимости устанавливаем загрузку с данного жесткого диска. При условии, что новый жесткий диск больше старого, на нем останется неразмеченная область. Ее следует разметить и отформатировать согласно имеющимся требованиям.
Статистика копирования в dd
Главный минус в dd - это отсутствие наглядного представления статистики выполнения процедуры копирования. Однако этот минус можно легко обойти. Достаточно подключиться к другому терминалу.
Определить номер процесса, под которым запущена dd.
Периодически посылать данному процессу команду kill -USR1 номер_процесса_dd .
watch -n 5 kill -USR1 номер_процесса_dd
- watch -n 5 — выполнять команду каждые 5 секунд;
- kill -USR1 номер_процесса_dd — показать статистику копирования.
Минусы использования dd для создания образов диска
У всего есть плюсы и минусы. dd является бесплатным и очень гибким инструментом, однако с его помощью можно сделать только полное копирование тома. Специальные программы умеют копировать только данные которые хранятся на диске.
Таким образом, объем образа диска, созданный с помощью dd будет равен объему самого диска — вне зависимости, сколько на диске данных.
Создадим с помощью утилиты 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 покажет Вам различные полезные ключи этой утилиты.