Создать файл побитовой копии flash диска в linux
В статье Копирование разделов жёсткого диска средствами GNU/Linux: как обойтись загрузочной флешкой там, где раньше нужен был Акронис, я посоветовал для копирования потенциально испорченных дисков использовать GNU ddrescue, а не оригинал, который назвал устаревшим. Но в комментариях nerfur указал мне, что dd_rescue регулярно обновляется и умеет на лету сжимать данные для последующей передачи по ssh. Так как эта задача GNU ddrescue не под силу, слухи об устаревании dd_rescue как видно сильно преувеличены.
Понятное дело — надо немедленно выяснить, чем современный вариант dd_rescue отличается от GNU ddrescue, что умеет и, возможно, убрать рекомендацию избегать использования оригинала из статьи. А также написать новую статью — про отличия этих двух программ, чем я и занялся.
Для тех, кто хочет побыстрее узнать чем кончилось дело и не интересуется душераздирающими подробностями сразу скажу, что после изучения вопроса моё мнение не изменилось — я всё ещё рекомендую пользоваться GNU ddrescue, но теперь уже по другой, гораздо более вменяемой причине — GNU ddrescue сначала сохраняет хорошо читаемые области диска и уже потом приступает к остальным. dd_rescue этого не умеет by design.
Клонирование диска
Для простоты предположим, что исходному жесткому диску соответствует файл устройства /dev/sda , а разделу целевого накопителя - файл устройства /dev/sdb1 . Вы можете скопировать с исходного устройства как содержимое его отдельного раздела (к примеру, /dev/sda1 ), так и все его содержимое. Для клонирования данных с устройства sda на устройство sdb1 мы можем выполнить следующую команду:
В данном случае были использованы следующие аргументы:
- bs : устанавливает размер копируемого блока данных (по умолчанию используется значение 512 байт, которое не подходит для жестких дисков большого объема)
- noerror : сообщает утилите dd о необходимости продолжать работу, игнорируя все ошибки чтения
- sync : сообщает утилите dd о необходимости заполнения блоков нулями в случае возникновения ошибок чтения
После исполнения команды вы можете отойти от компьютера, так как для завершения процесса клонирования жесткого диска потребуется достаточно много времени. В процессе работы утилиты не будет выводиться никакой информации; при этом вы также не увидите нового приветствия командной оболочки. Если вы предпочитаете видеть информацию о ходе процесса копирования данных, вы можете передать утилите аргумент status=progress аналогичным образом:
В результате вы будете получать информацию об объеме скопированных данных в реальном времени.
Кроме того, вы можете скопировать содержимое жесткого диска в обычный файл образа диска. Этот подход немного упростит процесс восстановления содержимого жесткого диска и позволит значительно сэкономить место на целевом накопителе. Для создания файла образа диска утилита dd может использоваться следующим образом:
Здесь /ПУТЬ/К/КОРНЕВОЙ/ДИРЕКТОРИИ/НАКОПИТЕЛЯ/ является реальным путем к корневой директории целевого накопителя (в моем случае это /media/elementary/TOSHIBA/ ), а не к соответствующему ему файлу устройства.
Я предпочитаю клонировать жесткие диски в файлы образов, а не просто создавать их побайтовые копии на на других дисках. Одним из преимуществ такого подхода является возможность перемещения файла образа практически на любой из доступных накопителей. Если же вы планируете лишь клонировать жесткий диск с целью его последующей замены, вам, разумеется, не придется заниматься созданием файла образа этого диска. Однако, в том случае, если вы хотите создать резервную копию диска в формате файла образа, которая может использоваться впоследствии, в том числе, для создания множества копий диска или вы хотите впоследствии перемешать файл образа диска (по какой-либо причине), последняя команда будет более предпочтительным решением. Еще одним ее достоинством является возможность сжатия файла образа, ведь из-за того, что неиспользуемое пространство диска отлично сжимается, вы получите результирующий файл гораздо меньшего размера.
Шаг 1. Выяснение метки USB-диска
Сначала подключим USB-диск к компьютеру.
В вышеприведённом примере я, настраивая опцию of , ввёл /dev/sdb . Обычно USB-диски, подключённые к системе, доступны именно по этому пути, но это — не некое железное правило, которое справедливо абсолютно всегда.
В вашей системе это может быть какой-то другой путь. Выяснить это можно с помощью команды lsblk . Выполнив эту команду нужно поискать диск, размер которого соответствует USB-диску, на который планируется записать образ.
Поиск USB-диска с помощью средств командной строки
Если вы предпочитаете для решения подобных задач использовать программы с графическим интерфейсом — можете найти путь к нужному диску с помощью чего-то наподобие GNOME Disks.
Поиск USB-диска с помощью инструмента с графическим интерфейсом
Теперь, когда нам известен путь к нужному носителю информации, можно создать Live USB-диск.
GNU ddrescue
dd_rhelp в связке с dd_rescue существенно упростил процесс, но у него был один фатальный недостаток — он не был написал на C работал ужасно медленно.
Не будучи в силах с этим смириться Антонио Диаз решил запилить свою программу с алгоритмом и константами, которую назвал — сюрприз — GNU ddrescue.
Вот как среагировал на это автор dd_rhelp.
Какое-то время dd_rhelp был единственным инструментом, который мог выполнять работy такого рода, но вот уже несколько лет как это не так: Антонио Диаз написал идеальную замену для моего инструмента: GNU 'ddrescue'.
Да, назвать инструмент тем же именем, что и 'dd_rescue' Курта Гарлоффа было не очень умно (вот вы улавливаете тонкое отличие между 'GNU ddrescue' и 'dd_rescue'?), но кажется это было сделано намерено, поскольку мы предупредили Антонио Диаза, что это наверняка внесёт сумятицу в миниатюрный мир инструментов восстановления жёстких дисков.
Тем не менее, если этот инструмент решает ваши задачи (а так и должно быть) я призываю вас использовать именно его. Почему? Сначала надо разобраться что мы сравниваем:
— dd_rhelp (грязный баш скрипт) + dd_rescue (Си) одной стороны
— GNU ddrescue (Си) с другой /* вообще-то GNU ddrescue написана на С++ */
dd_rhelp был задуман как быстрый хак для реализации того, что dd_rescue не делала и что на тот момент вообще нельзя было осуществить.
Возможно, есть случаи в которых GNU ddrescue не работает и это основная причина по которой я продолжаю поддерживать dd_rhelp. О таких случаях очень важно сообщать мне и Антонио Диазу.
Yes, this is not very clever to have called a tool the same name that 'dd_rescue' from Kurt Garloff (catch the subtle difference between 'GNU ddrescue' and 'dd_rescue' ?), but it seems that it was done by intent as we warned Antonio Diaz from the fact it would probably mess users in this tiny world of hard drive recovery tools.
Nevertheless, I really encourage you to use this replacement tool if it works for you (and it should be the case). Why? Understand first what we are comparing:
— dd_rhelp (in dirty bash script) + dd_rescue (in C) in one hand
— GNU ddrescue (in C) in the other.
dd_rhelp was meant as a quick hack to implement what dd_rescue didn't do, and what couldn't be done at that time (AFAIK).
It could be some cases where GNU ddrescue won't work, and this is the major reason why I keep maintaining dd_rhelp. It is important to tell me and Antonio Diaz when these cases occur.
Способ первый: Загрузочный USB носитель с Ubuntu
Сделать загрузочный USB носитель совсем не сложно. Вам понадобится только ISO файл с дистрибутивом Ubuntu. Если его в вас нет, то нужно скачать его с сайта Ubuntu . На этой же странице есть инструкции по созданию загрузочного USB диска в Mac OS X, Ubuntu и Windows.
Как только диск создан, с него можно загружаться. Возможно, вам придется подключить загрузку с USB в BIOS вашего компьютера. На многих новых машинах, нажатием при старте клавиши F12 вызывается загрузочное меню, где указаны все типы загрузочных носителей.
Когда Ubuntu загрузится, можно приступать к созданию копии жесткого диска. Для этого воспользуемся программой GParted, умеющей создавать копии разделов и дисков.
Найти эту программу можно так: Система --> Администрирование --> Partition Editor (или нечто подобное). А можно нажать одновременно клавиши ALT и F2 и появившемся окне набрать "gksu gparted" (без кавычек).
Там же есть и программа Disk Utility, которая содержит множество утилит для работы со всеми дисками в вашей системе. С ее помощью можно примонтировать или отмонтировать диски, отформатировать их. Последнее, кстати, совсем нелишне проделать с тем диском, на котором вы будете создавать резервную копию, особенно если на нем раньше была Windows.
Сам процесс создания копии подробно описан на сайте GParted или на форуме Ubuntu . Существует также специальный GParted Live CD , который может заменить Ubuntu.
Процесс изготовления копии жесткого диска на съемный USB диск займет немало времени, в зависимости от объема диска; в нашем случае около четырех часов. Значительно ускорить этот процесс может адаптер с eSATA коннектором, типа Thermaltake BlackX ST0005U . Такую штуку полезно иметь всем, кто часто создает резервные копии дисков.
Использовать dd_rescue когда нужен улучшенный вариант dd
Способ третий: Команда dd
Выглядит это в самом общем виде вот так:
В данном примере /dev/sda ≈ это диск, с которого снимается копия, а /dev/sdb ≈ диск на который копируется. Имейте в виду, что dd делает побайтовую копию всего диска, в том числе и загрузочного сектора (MBR). Команда dd позволяет также скопировать диск не на другой диск, а просто в файл, который впоследствии можно поместить на хранение куда угодно, можно записать на DVD, а в случае нужды при помощи той же команды копировать обратно на место:
Скорость при копировании при помощи команды dd в приведенном варианте будет невелика, примерно такая же, как при помощи программы GParted. Дело в том, что по умолчанию dd работает блоками по 512 байт. Но можно в несколько раз повысить эту скорость, применив другой размер блока, скажем 100Мб:
Советую вам прочесть либо ман dd, либо статью про эту команду.
Не важно, каким из трех способов вы воспользуетесь; важно, что у вас будет резервная копия всей системы. Компьютеры время от времени ломаются, и время их поломки всегда самое неудачное. Так что не ленитесь создать клон своего винчестера.
В UNIX системах есть одна очень древняя команда, которая называется dd. Она предназначена для того, чтобы что-то куда-то копировать побайтово. На первый взгляд — ничего выдающегося, но если рассмотреть все возможности этого универсального инструмента, то можно выполнять довольно сложные операции без привлечения дополнительного ПО, например: выполнять резервную копию MBR, создавать дампы данных с различных накопителей, зеркалировать носители информации, восстанавливать из резервной копии данные на носители и многое другое, а, при совмещении возможностей dd и поддержке криптографических алгоритмов ядра Linux, можно даже создавать зашифрованные файлы, содержащие в себе целую файловую систему.
Опять же, в заметке я опишу самые часто используемые примеры использования команды, которые очень облегчают работу в UNIX системах.
Начну с небольшого примера, наглядно иллюстрирующего основные параметры команды:
- if: указывает на источник, т.е. на то, откуда копируем. Указывается файл, который может быть как обычным файлом, так и файлом устройства.
- of: указывает на файл назначения. То же самое, писать можем как в обычный файл, так и напрямую в устройство.
- bs: количество байт, которые будут записаны за раз. Можно представлять этот аргумент как размер куска данные, которые будут записаны или прочитаны, а количество кусков регулируется уже следующим параметром.
- count: как раз то число, которое указывает: сколько кусочков будет скопировано.
Создание образа диска:
Команда будет считывать из устройства данные и записывать в файл до тех пор, пока не достигнет окончания устройства. Если диск битый, можно попробовать его прочитать, игнорируя ошибки чтения:
Параметр «conv» позволяет подключать несколько фильтров, применимых к потоку данных. Фильтр «noerror» как раз отключает остановку работы программы, когда наткнется на ошибку чтения. Таким образом, некоторые данные с диска все же можно будет прочитать. Точно таким образом я спас данные со своей флешки Corsair, которую погнули: подобрал подходящее положение, когда контакт есть, и сделал дамп файловой системы.
Подключить, кстати, такие образы можно при помощи команды mount с ключем "-o loop":
Если что-то не получается, процесс разбивается на 2 уровня:
Если и так не работает, значит файловая система образа полетела.
Работа с носителями информации
Очень простое, хоть и не оптимальное решение клонирования жесткого диска:
Все то же побайтовой копирование с размером буфера 4 Кб. Минус способа в том, что при любой заполненности разделов копироваться будут все биты, что не выгодно при копировании разделов с маленькой заполненностью. Чтобы уменьшить время копирования при манипуляции с большими объемами данных, можно просто перенести MBR на новый носитель (я ниже опишу как), перечитать таблицу разделов ядра (при помощи того же fdisk), создать файловые системы и просто скопировать файлы (не забыв сохранить права доступа к файлам).
Как вариант, можно даже по расписанию делать бекап раздела по сети. Разрулив ключи ssh будет работать такая схема:
Когда-то читал исследование, согласно которому очень большая доля жестких дисков на барахолке подвергается восстановлению данных без привлечения чего-то специализированного, и содержит конфиденциальную информацию. Чтобы на носителе ничего нельзя было восстановить — можно забить его нулями:
Думаю, понятно на что нужно заменить DEVICE. После проведения лекций по Linux, я очень тщательно стал следить за тем, что пишу.
Проверить можно тем же dd, но преобразовав данные в hex:
Должны посыпаться нули.
Операции с MBR
MBR расположена в первых 512 байтах жесткого диска, и состоит из таблицы разделов, загрузчика и пары доп. байт. Иногда, ее приходится бекапить, восстанавливать и т.д. Бекап выполняется так:
Восстановить можно проще:
Причины этих махинаций с MBR могут быть разные, однако хочу рассказать одну особенность, взятую из опыта: после восстановления давней копии MBR, где один из разделов был ext3, а позже стал FAT и использовался Windows, раздел перестал видиться виндой. Причина — ID раздела, который хранится в MBR. Если UNIX монтирует файловые системы согласно суперблоку, то винды ориентируются на ID разделов из MBR. Поэтому всегда нужно проверять ID разделов при помощи fdisk, особенно если на компьютере есть винды.
Генерация файлов
При помощи dd можно генерировать файлы, а затем использовать их как контейнеры других файловых систем даже в зашифрованном виде. Технология следующая:
При помощи dd создается файл, забитый нулями (случайными числами забивать не рационально: долго и бессмысленно):
Создался файл размером почти в гигабайт. Теперь нужно сделать этот файл блочным устройством и, при этом, пропустить его через механизм шифрования ядра linux. Я выберу алгоритм blowfish. Подгрузка модулей:
Ассоциация образа с блочным устройством со включенным шифрованием:
Команда запросит ввести пароль, который и будет ключем к образу. Если ключ введен не правильно, система не смонтируется. Можно будет заново создать данные в образе, используя новый ключ, но к старым данным доступа не будет.
Создаем файловую систему и монтируем:
Образ готов к записи данных. После завершения работы с ним, нужно не забыть его отмонтировать и отключить от блочного loop устройства:
Теперь шифрованный образ готов.
Основные идеи я расписал, однако множество задач, которые можно решить при помощи маленькой программки, имя которой состоит из двух букв, намного шире. Программа «dd» — яркий пример того, что IT'шники называют «UNIX way»: одна программа — часть механизма, выполняет исключительно свою задачу, и выполняет ее хорошо. В руках человека, который знает свое дело, которому свойственен не стандартный подход к решению задачи, такие маленькие программки помогут быстро и эффективно решать комплексные задачи, которые, на первый взгляд, должны решать крупные специализированные пакеты.
Существует несколько программ с графическим интерфейсом, предназначенных для создания Live USB-дисков. Вероятно, в Linux самой популярной из них является Etcher. В Ubuntu есть собственный инструмент для решения этой задачи — Startup Disk Creator.
Но продвинутые пользователи Linux, ради удобного и быстрого создания Live USB-дисков, постоянно обращаются к команде dd .
Это — CLI-инструмент, который даёт тому, кто его выбирает, мощные возможности по копированию и конвертированию файлов.
Обычно dd используют для того, чтобы записывать ISO-файлы на внешние носители информации, вроде USB-дисков. Потом такой носитель информации можно использовать, например, для установки записанного на него Linux-дистрибутива на обычный компьютер или на ноутбук.
Тут я расскажу о создании загрузочных USB-дисков с помощью dd . В частности, разберу команды, которые нужны для того, чтобы сначала найти в системе нужный диск, а потом записать на него ISO-файл.
Настоящее время
Как уже сказано, dd_rescue и GNU ddrescue до сих пор периодически обновляются, а вот dd_rhelp заморожен на уровне 2008 года и это похоже навсегда. Обновление 2012 года, правда внесло какие-то косметические изменения, но это мало что изменило.
Восстановление данных из файла резервной копии
А теперь я продемонстрирую методику использования утилиты dd для работы с файлом образов дисков. Как и в случае процесса копирования данных в файл образа диска, данная операция должна выполняться в рамках загруженной Live-системы. Я буду предполагать, что вы установили целевой жесткий диск в ваш компьютер, подключили нему внешний накопитель (с файлом образа диска) и загрузили Live-систему.
После завершения работы утилиты dd вы должны были получить файл образа диска с именем backup_image.img.gz на внешнем накопителе. Для восстановления данных из этого файла на новом жестком диске (мы будем восстанавливать данные на новом диске, представленном файлом устройства с именем sda , объем которого совпадает с объемом оригинального жесткого диска), нам для начала понадобятся привилегии суперпользователя. Если вы используете дистрибутив, основанный на Ubuntu, вам придется сначала выполнить команду sudo su , ввести свой пароль, нажать клавишу Enter , после чего выполнить аналогичную команду для восстановления содержимого жесткого диска из файла образа:
Здесь /ПУТЬ/К/КОРНЕВОЙ/ДИРЕКТОРИИ/НАКОПИТЕЛЯ/ является путем к директории внешнего накопителя с файлом backup_image.img.gz .
Примечание: если вы используете дистрибутив, в котором утилита sudo не используется по умолчанию (такой, как Fedora или openSUSE), вы сможете получить привилегии суперпользователя с помощью команды su . После исполнения этой команды следует ввести пароль администратора и нажать клавишу Enter . После этого вы сможете выполнить приведенную выше команду для восстановления содержимого жесткого диска.
И снова вы можете отойти от компьютера, так как процесс восстановления содержимого жесткого диска займет достаточно много времени. После его окончания вы должны получить точную копию оригинального жесткого диска, пригодную для загрузки системы. Теперь вы можете перезагрузить систему, удалить накопитель или диск с Live-системой и загрузить систему с клонированного диска.
Создание Live USB-дисков на основе ISO-файлов с помощью команды dd
Прежде чем я покажу вам пошаговый план работы с dd — хочу в двух словах рассказать об этой команде и продемонстрировать пример её использования.
Вот как выглядит вызов команды dd для записи ISO-файла на USB-диск:
Разберём эту команду.
Разбор команды dd
Сначала в командной строке вводят dd . Это, как и должно быть, просто имя команды, которую мы собираемся запустить.
Далее указывают следующее: if=»./filename.iso» . Имя опции if расшифровывается как input file — входной файл. Тут мы сообщаем dd о том, какой именно ISO-файл хотим записать на USB-диск.
После этого вводят путь к USB-диску. В данном случае это выглядит как of=»/dev/sdb» . Здесь of означает output file, то есть — выходной файл.
При работе с dd стоит помнить о том, что то, что указывают в опции of , необязательно должно представлять собой файл в системе, используемой для работы. Тут можно указывать нечто вроде пути к внешнему устройству (именно так и сделано в нашем примере). И хотя выглядит этот путь как путь к обычному файлу, он, на самом деле, символизирует устройство, подключённое к компьютеру.
Опция status может принимать одно из трёх значений: none , noxfer и progress .
Если она установлена в значение progress — это приведёт к тому, что dd будет периодически сообщать нам о том, сколько данных из ISO-файла уже перенесено на диск, и о том, сколько времени, приблизительно, осталось до завершения операции.
Если использовать тут значение none , то dd ничего не будет сообщать о ходе процедуры, но, если в процессе записи образа на диск возникнут ошибки, программа об этом сообщит.
Вариант noxfer позволяет скрыть некоторые сведения, выводимые после того, как перенос данных на USB-диск завершён. Например — сведения о том, сколько времени заняла процедура копирования ISO-файла.
И, наконец, мы воспользовались вариантом fsync опции conv . Это приводит к тому, что dd не сообщит об успешном завершении операции до тех пор, пока весь ISO-файл не будет записан на USB-диск.
Если эту опцию не указывать, dd , всё равно, правильно запишет данные (и при этом может показаться, что команда работает быстрее, чем с этой опцией), но может оказаться так, что системе понадобится некоторое время на то, чтобы, при попытке безопасно извлечь USB-диск, сообщить о том, что это возможно. Дело в том, что без этой опции завершение записи образа проводится в фоновом режиме, что позволяет пользователю в это время заняться какими-то другими делами.
Теперь, когда мы разобрали команду dd , рассмотрим весь процесс записи ISO-файлов на USB-диски.
Но, прежде чем мы продолжим, хочу вас кое о чём предупредить. Командная строка — это палка о двух концах. Будьте очень осторожны, выполняя команды наподобие dd . А именно — тщательно проконтролируйте то, что в этой команде используется правильный выходной файл. Ошибка при указании опции of может привести к форматированию главного системного диска и к уничтожению файлов операционной системы, установленной на компьютере.
Первые шаги
Первым делом вы должны загрузить вашу Live-систему. Название используемого дистрибутива не имеет решающего значения, так как утилита dd имеется в комплекте поставки практически каждого из дистрибутивов Linux. Я буду использовать бета-версию дистрибутива Elementary OS Loki . После загрузки системы следует подключить внешний дисковый накопитель. Этот накопитель не должен содержать каких-либо важных данных (так как утилита dd перезапишет его содержимое). Лучшим вариантом является использование для этой цели пустого, только что отформатированного дискового накопителя.
Теперь следует открыть окно терминала (в Live-системе) и удостовериться в том, что файл устройства клонируемого жесткого диска на самом деле носит имя sda . Для этой цели я использую команду grep sda /var/log/syslog . Вывод этой команды (Рисунок 1) должен содержать информацию о том, что файл устройства /dev/sda соответствует клонируемому диску.
Рисунок 1: Велика вероятность того, что файл устройства, соответствующий клонируемом жесткому диску, носит имя sda.
Далее вам придется выяснить путь к корневой директории подключенного внешнего накопителя. Для этого нужно воспользоваться командой mount . В результате будет выведен значительный объем данных, при рассмотрении которых несложно определить путь к директории, ассоциированной с вашим целевым устройством (внешним накопителем). Наиболее вероятно, что данному устройству будет соответствовать файл устройства /dev/sdb .
dd_rhelp
Как известно если гора не идёт к Магомету, то Магомет вполне может подойти к ней самостоятельно. Я думаю, как-то так и рассуждал LAB Valentin, когда принял решение написать баш скрипт, использующий dd_rescue для реализации оптимальной стратегии копирования повреждённых файлов.
В конце концов автор dd_rescue включил этот скрипт, получивший название dd_rhelp, в официальную версию основной программы.
dd_rescue
Для снятия данных с повреждённой поверхности Kurt Garloff написал утилиту, которая работала примерно как dd, но при встрече с битыми секторами не зачитывала диск до смерти и не игнорировала ошибки, а, уменьшив скорость до минимально возможной, спасала всё, что можно спасти.
Несмотря на явный прогресс по сравнению с dd, dd_rescue читала весь файл за один проход, мерным солдатским шагом двигаясь от начала к концу. Из за наличия нечитаемой области, процесс получения точной копии мог занять часы, месяцы или даже годы, тогда как время получения копии, достоверной на 99 процентов измерялось в десятках минут.
Кроме того, во время медленного и вдумчивого чтения дышащих на ладан секторов все остальные (нормально читаемые на момент запуска программы) вполне могли отбросить копыта, потому что пришло их время. Если бы их прочитали минутой или двумя раньше — всё бы было хорошо, а так — момент упущен — такое случается.
Оптимальным вариантом было бы сначала сохранить всё, что пока читается без проблем, а потом уже приступить к чтению ненадёжных фрагментов, но из коробки dd_rescue этого не умела, хотя и обладала всем необходимым арсеналом возможностей. Поэтому осуществить описанное выше можно было только вручную.
Историческая справка
Традиционно для создания бинарных копий физических накопителей в *nix системах использовалась программа dd, читавшая диск кусками заранее заданного размера. Она хорошо справлялась с задачей, когда речь шла о копировании данных с исправных устройств, но за обращение с частично неисправными дисками dd заслуженно получила прозвище disk destroyer.
Способ второй: Clonezilla
Clonezilla ≈ это дистрибутив Linux специально созданный для клонирования дисков. Бывает двух видов: Live и SE. Live работает так же как уже описанный Ubuntu Live USB (CD). Вы загружаете компьютер с этого Live USB (CD)
и производите копирование любого диска на любой диск из числа подключенных к системе. Для этой цели дистрибутив содержит множество программ, объединенных одной простой системой меню, помогающей вам проделать нужную операцию. По умолчанию, программой копирования разделов является Partclone .
Clonezilla SE (Server Edition) предназначена для клонирования дисков через сети.
Последняя версия Clonezilla 1.2.5.17 выходит в Debian и Ubuntu вариантах. Доступна теперь и AMD64 версия, имеющая 64-битные версии всех программ и возможность копировать большие разделы. Все приложения обновлены до версии ядра Linux 2.6.32-12. Самое сложное при использовании Clonezilla ≈ не перепутать, какой из дисков является мастером, а какой копией. Clonezilla также обеспечивает копирование Главного Загрузочного Сектора (MBR), чего не делает GParted из Ubuntu Live CD. В последнем случае приходится делать это вручную через командную строку.
Выполняйте описанные действия с максимальной осторожностью
Первый аспект использования данной утилиты, о котором вам стоит знать, заключается в том, что в случае передачи некорректных аргументов вы можете потерять все ваши важные данные. По этой причине вы должны проявлять максимальную осторожность при работе с ней. Вам определенно следует убедиться в том, что вы точно знаете пути и имена исходных и целевых файлов.
Вам также придется использовать утилиту dd при работе с Live-ситемой Linux. Она копирует каждый байт (и даже данные из неиспользуемого пространства накопителей), поэтому процесс создания резервных копий данных может надолго затянуться. Работа с утилитой dd на машине, находящейся в промышленной эксплуатации, может повлечь за собой потерю данных (именно по этой причине и рекомендуется использовать Live-систему). Поэтому вам следует прямо сейчас загрузить Live-образ формата ISO вашего любимого дистрибутива Linux и записать его либо на диск DVD, либо на флеш-накопитель с интерфейсом USB.
Имея в виду приведенные выше предупреждения, давайте приступим к работе с утилитой dd.
Еще один очень важный нюанс заключается в том, что целевой жесткий диск должен быть либо такого же, либо большего размера, чем клонируемый жесткий диск. Утилита dd будет копировать данные как из используемых, так и из неиспользуемых областей жесткого диска. Предположим, к примеру, что вы установили систему Linux на жесткий диск объемом в 250 ГБ, причем на данный момент на этом диске хранится лишь 100 ГБ полезных данных. dd не будет различать используемое и неиспользуемое дисковое пространство, создавая образ всего жесткого диска: разумеется, его объем будет равен 250 ГБ. Вы можете немного сократить размер файла образа жесткого диска, задействовав один из механизмов сжатия данных (об этом будет сказано чуть позже).
Итоги
После завершения работы dd в вашем распоряжении окажется USB-диск, с которого можно загрузиться. Но, пожалуй, важнее то, что теперь вы лучше узнали инструменты командной строки Linux, освоили кое-что новое, позволяющее ускорить и упростить решение некоторых задач.
Как же быть простому пользователю
Использовать GNU ddrescue для создания копий заведомо проблемных дисков
Там, где нужна функциональность dd_rhelp, лучше воспользоваться GNU ddrescue. Как показано выше, dd_rescue может заменить GNU ddrescue только в связке с dd_rhelp, автор которого рекомендует своим детищем по возможности не пользоваться.
Поздравляю!
Теперь вы имеете представление о том, как использовать утилиту dd для клонирования жестких дисков. При этом dd может использоваться и для других целей. Для раскрытия потенциала данной утилиты вам придется ознакомиться с ее страницей руководства, которая открывается с помощью команды man dd .
Создать копию всего диска ≈ прекрасный способ сохранить не только ваши данные, но и саму систему. Цены на переносные USB жесткие диски постоянно снижаются, и весьма полезно иметь парочку для подобных работ. Если ваш основной винчестер испортится, вы сможете заменить его на запасной с копией системы и продолжить работу буквально через несколько минут. Дело только за изготовлением такой копии. Это можно сделать множеством способов, в этой статье мы опишем 3 из них.
Основная проблема при снятии точной копии диска заключается в необходимости загрузиться с другого носителя, чтобы копия была полноценной. Можно загрузиться с LiveCD, либо с загрузочной флешки. Вероятно, у вас где-нибудь хранится установочный диск вашего дистрибутива, можно воспользоваться им. В рамках данной статьи мы будем говорить о дистрибутиве Ubuntu 10.4. Второй способ снять копию жесткого диска ≈ использовать специальный клонирующий дистрибутив Clonezilla. Этот способ хорош для тех, кто еще плохо знает Linux и совсем неуверенно себя чувствует в командной строке. Третий способ позволяет снять копию вашего винчестера из любого дистрибутива Linux при помощи одной простой команды в терминале.
Шаг 0. Загрузка ISO-файла
Само собой разумеется то, что для того, чтобы записать на USB-диск ISO-файл, этот файл сначала надо где-то раздобыть.
Я, испытывая команду dd , буду записывать на диск образ Ubuntu 20.04, который можно скачать отсюда.
Шаг 2. Запись ISO-файла на USB-диск
Откроем терминал в директории, в которой находится загруженный ISO-файл, и запустим следующую команду (запуская эту команду у себя — замените, если нужно, /dev/sdb на путь к вашему USB-диску):
После выполнения этой команды нужно будет некоторое время подождать и dd создаст Live USB-диск.
Создание Live USB-диска
Для создания резевной копии диска — при прочих равных используйте GNU ddrescue
По моему мнению, если речь идёт о снятии образа диска, и сохранении его на другом диске, непосредственно подключенном к тому же компьютеру, нет никаких причин отказываться от GNU ddrescue в пользу dd_rescue или dd, а вот использование оптимальной стратегии копирования данных, которая в них не реализована, может быть хорошей страховкой и избавит пользователя от многих неожиданных неприятностей.
Оригинал: Full Metal Backup Using the dd Command
Автор: Jack Wallen
Дата публикации: 19 августа 2016 г.
Перевод: А.Панин
Дата перевода: 15 декабря 2016 г.
Если вы ищите инструмент для создания резервной копии данных, вам, возможно, не стоит рассматривать вариантов помимо утилиты dd.
Как и в случае любых аспектов Linux, существуют миллиарды способов решения каждой отдельной проблемы. Это утверждение относится к любой проблеме, начиная с настройки окружения рабочего стола и веб-сервера и заканчивая чтением файлов системных журналов и созданием резервных копий данных. При этом поиск самого оптимального решения проблемы может затянуться на долгое время. Но в процессе поиска инструмента для создания резервных копий данных ваш поиск может начаться и закончиться на этапе рассмотрения утилиты dd. Название утилиты dd является отсылкой к аббревиатуре DD языка управления задачами компании IBM (Job Control Language) и расшифровывается как "Описание данных" ("Data Description"). Основной задачей dd является преобразование и копирование содержимого файлов. При этом с помощью dd вы также можете без каких-либо сложностей скопировать содержимое раздела жесткого диска или же всего жесткого диска целиком.
Список функций утилиты:
- Создание и восстановление резервных копий как отдельных разделов, так и всего содержимого жестких дисков.
- Копирование необработанных данных из файлов устройств.
- Преобразование форматов данных.
- Создание файлов фиксированных размеров.
Однако, что более важно, утилита dd является одной из старейших утилит для работы с образами дисковых накопителей, которая используется по сей день. Почему же она до сих пор актуальная? Скорее всего, потому, что она является мощной, надежной и (что наиболее важно) простой в использовании.
Я опишу процесс использования утилиты dd для сохранения содержимого жесткого диска в файле образа и последующего восстановления содержимого жесткого диска на основе этого файла образа.
Читайте также: