Put your lights on!

Как создать образ USB/SD накопителя на Mac (diskutil, dd)

Предположим у вас есть SD-карта или USB-флешка на которой что-то записано. Например, карта памяти с фотографиями или загрузочный USB для установки macOS. В принципе, это не важно. И вы хотели бы сохранить эти данные как есть, чтобы потом, при необходимости, воссоздать их на другой носитель, или на тот, же… но позже (Я в таком виде храню образы установочных USB-флешек macOS). Как это сделать не используя никаких сторонних средств? Есть два способа. Начну с наиболее простого…

1. Дисковая утилита

Вставьте флешку или карту в Mac. Откройте Дисковую Утилиту. В панели со списком устройств выберите нужный том на устройстве. В моём случае это том на флешке JetFlash Transcend 16GB Media с именем  ”Install macOS Sierra”. Это загрузочный носитель для установки macOS Sierra.

Сделайте правый клик и выберите “Образ из…”. Вот как это выглядит в моем случае:

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

Введите пароль. Начнется процесс создания и образ устройств будет создан.

Получите файл, равный по размеру объему всей суммарной информации на диске. В моем случае — 5,09 Гб. Вот сведения о нём по команде file:

Для того, чтобы потом восстановить его обратно, или на другое устройство, сделайте следующее: вставьте целевое устройство, выберите его панели Дисковой Утилиты, правый клик и нажмите “Восстановить…”. Выберите образ диска, который будет восстановлен на целевое устройство.

Начните процесс восстановления, нажав кнопку “Восстановить”.

Готово!

2. Терминал и команда dd

Рассказывая о команде dd, не возможно удержаться от лирического отступления…

Команда стара, как сама UNIX. Ей пользовались еще во времена перфокарт и ленточных накопителей. Сущность её бронебойно проста, как все гениальное: что к ней попадет на вход, она копирует на выход. Входом/выходом может быть всё что угодно… хоть файл, хоть целое устройство хранения информации.

Первый раз я с ней (а точнее с её портом под Windows – DiskDupe) я столкнулся во второй половине 90-х. Это было время MS-DOS и прорывных Windows 95/NT4. Тогда ещё ПО распространялось на 1.44″-дискетах. И некоторые производители ПО, чтобы как-то защитится от пиратов, изобретали всяческие методы защиты информации от копирования. Ну например, фирменные дискеты для установки программы содержали специальные служебные блоки, они не несли никакой полезной информации. Но их отсутствие на носителе, сообщало установщику программы что дискета фейковая, и установка останавливалась. Воспроизвести нужные блоки простым копированием не представлялось возможным. Но умельцы из мира UNIX не дремали. Как вы думаете, что помогло им создать точную копию “защищенных” от подделки дискет? 😉 … dd. Она просто на уровне устройства считывала сектора информации, полностью игнорируя все “сомнения” о том, что полезная ли это информация, служебная ли, или что-то замаскированное под неисправный сектор данных. Просто, бронебойно, эффективно. Ну а теперь, собственно, о применении dd к теме…

Команду dd можно использовать для:

  1. Создания образа из устройства, в том числе, с SD-карт и диски USB-flash.
  2. Записи информации из образа на устройства.

Все ниже перечисленные действия будут в Терминале, с использованием консольной версии Дисковой Утилиты и dd.

Предупреждаю!… ошибки и бездумные действия с этими программами могут привести к полной потере данных.

Создание и восстановление образа командой dd

Логика процедуры следующая:

  1. Запустить Терминала
  2. Получить список устройств командой diskutil
  3. Отсоединить устройство от файловой системы, без его физического извлечения
  4. Создать образ устройства командой dd
  5. Восстановить (развернуть) образ на устройство командой dd

А теперь обо всем по порядку в деталях.

Получение информации о списке устройств

Откройте Терминал и введите команду чтобы посмотреть спитое устройств в вашей системе:

$ diskutil list

В моём случае (есть права администратора), вывод этой команды был такой:

Моя USB-флешка емкость 16Гб отображается в системе как внешнее физическое (external, physical) устройство по адресу /dev/disk2.

Размонтирование устройства

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

$ diskutil unmountDisk /dev/disk2

В ответ получите фразу “Unmount of all volumes on disk2 was successful”.

Создание образа устройства командой dd

И наконец, создайте образ нужного устройства, введя следующую команду:

$ sudo dd if=/dev/disk2 of=/Users/USERNAME/Desktop/backup.16Gb.macOSSierra.img.dd bs=512

или

$ sudo dd if=/dev/disk2 of=/Users/USERNAME/Desktop/backup.16Gb.macOSSierra.img.dd bs=1m

или

$ sudo dd if=/dev/disk2 of=/Users/USERNAME/Desktop/backup.16Gb.macOSSierra.img.dd bs=64k

Как вы поняли, USERNAME и Desktop — моё имя пользователя и папка назначения. Замените их на то, что нужно в вашем случае. Кроме того, if=/dev/disk2 — означает что входом (if, input file) у нас будет устройство disk2, выходом (of, output file)— файл с именем backup.16Gb.macOSSierra.img.dd в указанной папке, а bs — это размер блока в байтах, который будет последовательно считывать команда. В моих примерах он равен 512 байт, 1Мб и 64Кбайт соответственно. Потом, спросят пароль и начнется создание образа. Чем больше размер устройства (файла) на входе, тем больше будете ждать завершения выполнения команды. Это может занять ОЧЕНЬ много времени. Введя первую команду, я ждал примерно час. Вывод команды будет примерно такой:

!!! Выходной файл образа получается таким же размером как емкость устройства. Учтите этот факт!

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

$ sudo dd if=/dev/disk2 bs=64K | gzip -c > backup.USB16GB.img.dd.gz

В этом случае, выходные данные будут переданы команде gzip, которая сожмет их. Размер выходного файла будет меньше. Но и времени может быть затрачено больше. В этом примере имя выходного файла другое — backup.USB16GB.img.dd.gz, как вы поняли.

Чтобы проверить что мы имеет в итоге, выполните команду:

$ file image-file-name.img.dd

Увидите что-то типа:

$ file /Users/USERNAME/Desktop/backup.16Gb.macOSSierra.img.dd /Users/sergio/Desktop/backup.16Gb.macOSSierra.img.dd: DOS/MBR boot sector; partition 1 : ID=0xee, start-CHS (0x3ff,254,63), end-CHS (0x3ff,254,63), startsector 1, 31703039 sectors, extended partition table (last)

Запись dd-образа обратно на устройство

Синтаксис будет такой:

$ diskutil list
$ diskutil unmountDisk /dev/disk2
$ sudo dd if=image-file-name.img.dd of=/dev/disk2
$ sudo sh -c 'gunzip -c image-file-name.img.dd.gz | dd of=/dev/disk2'

Первая и вторая строки, думаю, вам понятны из предыдущих примеров. Третья — это команда восстановления. Четвертая — тоже команда восстановления, но при условии того, что образ был предварительно сжат. Узнать больше про команду dd можно почитав справку в man:

$ man dd

В качестве резюме…

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

Командой dd можно создать точную посекторную копию устройства (тома, файла). Размер файла равен ёмкости устройства. Файлу нужно самому присвоить понятное имя и не забыть что потом с ним делать. Процедура сравнительно более продолжительна по времени, чем процедура с Дисковой утилитой. Можно сжать образ на лету командой gzip.

Put your lights on!

Свежие записи

Страница в соц. сетях

Подпишитесь на новости страницы и участвуйте в их обсуждении

Архивы

Рубрики

Мета