Клонирование USB Flash с установленной системой.
Имеется сервер на Debian. Система установлена на USB флешку. Размер флешки 7,46GB (8GB). На ней разделы: /boot — 256MB, swap — 3GB, /(root) — 3GB. Оставшееся место (около 1G) не размечено.
Хочу сделать полную копию (вместе с MBR и GRUB’ом) этой флешки на случай отказа текущей. Взял вторую 8-ми гиговую флешку — а она чуть меньше по объему — 7,43GB. Clonezilla не захотела делать дубликат на флешку меньшего объема даже не смотря на то, что все разделы должны уместиться. Хотя на флешки большего объема делает без проблем.
Как лучше и проще сделать дубликат?
Думаю, что в данном случае допустим банальный dd с отбрасыванием того, что не влезло на новую флешку (это само получится, dd выплюнет ошибку, но до этого места всё скопирует). Разумеется, если неразмеченная область именно в конце диска, а не в середине.
KivApple ★★★★★ ( 11.07.16 21:07:33 MSK )
Последнее исправление: KivApple 11.07.16 21:08:02 MSK (всего исправлений: 1)
Как банальный вариант — dd наверное прокатит, конечно. Но копировать он точно будет дольше.
sfdisk -d /dev/sda > /root/table_usb sfdisk /dev/sdb < root/table_usb
После этого той же Clonezill'ой скопировать «один-в-один» все три раздела. Но там ведь вроде еще и GRUB надо как-то вкорячить на вторую флешку.
Я бы архивировал все разделы в отдельные архивы. Места меньше занимает. Когда нужно восстановить на другую флешку — руками создал нужные разделы, установил grub и распаковал архивы. И по поводу отдельного /boot — не уверен, что он нужен. Да и swap тоже. Тогда всё сильно упрощается.
dd, по крайней мере, должен сделать всё однозначно хорошо. С помощью dd делал себе загрузочную флешку, им же делал её дубликат для товарища. Правда, ситуация обратная, у него на 8 а у меня на 1, но в итоге две рабочие загрузочные флешки, загрузочные разделы нормальные, с грабом и флагом загрузки.
По поводу небольшой разницы в размере согласен со сказанным выше. Скорее всего, всё будет хорошо.
Создаем образ флешки
Решил на днях создать образ своих рабочих, загрузочных флешек с разными операционными системами. Как создавать эти мульти-загрузочные флешки, я уже писал в одной из своих статей. Поможет нам, в создании образов, старая и проверенная временем программа dd. Насколько я знаю, то утилита dd должна быть установлена в системе по умолчанию. Для создания образа Вашей «флешки», выполним в Терминале следующую команду:
sudo dd if=/dev/sdc of=image.iso
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 и других производителей, а можно немного отличиться и выбрать для себя ювелирные флешки со стразами, бриллиантами и другими украшениями. Хотя это конечно же будет выбор прекрасной половины человечества. Хотя на работу, записанного образа, внешний вид устройства не влияет абсолютно.
Создание Live USB-дисков в Linux с помощью команды dd
Существует несколько программ с графическим интерфейсом, предназначенных для создания Live USB-дисков. Вероятно, в Linux самой популярной из них является Etcher. В Ubuntu есть собственный инструмент для решения этой задачи — Startup Disk Creator.
Но продвинутые пользователи Linux, ради удобного и быстрого создания Live USB-дисков, постоянно обращаются к команде dd .
Это — CLI-инструмент, который даёт тому, кто его выбирает, мощные возможности по копированию и конвертированию файлов.
Обычно dd используют для того, чтобы записывать ISO-файлы на внешние носители информации, вроде USB-дисков. Потом такой носитель информации можно использовать, например, для установки записанного на него Linux-дистрибутива на обычный компьютер или на ноутбук.
Тут я расскажу о создании загрузочных USB-дисков с помощью dd . В частности, разберу команды, которые нужны для того, чтобы сначала найти в системе нужный диск, а потом записать на него ISO-файл.
Создание Live USB-дисков на основе ISO-файлов с помощью команды dd
Прежде чем я покажу вам пошаговый план работы с dd — хочу в двух словах рассказать об этой команде и продемонстрировать пример её использования.
Вот как выглядит вызов команды dd для записи ISO-файла на USB-диск:
dd if="./filename.iso" of="/dev/sdb" status="progress" conv="fsync"
Сначала в командной строке вводят 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 может привести к форматированию главного системного диска и к уничтожению файлов операционной системы, установленной на компьютере.
Шаг 0. Загрузка ISO-файла
Само собой разумеется то, что для того, чтобы записать на USB-диск ISO-файл, этот файл сначала надо где-то раздобыть.
Я, испытывая команду dd , буду записывать на диск образ Ubuntu 20.04, который можно скачать отсюда.
Шаг 1. Выяснение метки USB-диска
Сначала подключим USB-диск к компьютеру.
В вышеприведённом примере я, настраивая опцию of , ввёл /dev/sdb . Обычно USB-диски, подключённые к системе, доступны именно по этому пути, но это — не некое железное правило, которое справедливо абсолютно всегда.
В вашей системе это может быть какой-то другой путь. Выяснить это можно с помощью команды lsblk . Выполнив эту команду нужно поискать диск, размер которого соответствует USB-диску, на который планируется записать образ.
Поиск USB-диска с помощью средств командной строки
Если вы предпочитаете для решения подобных задач использовать программы с графическим интерфейсом — можете найти путь к нужному диску с помощью чего-то наподобие GNOME Disks.
Поиск USB-диска с помощью инструмента с графическим интерфейсом
Теперь, когда нам известен путь к нужному носителю информации, можно создать Live USB-диск.
Шаг 2. Запись ISO-файла на USB-диск
Откроем терминал в директории, в которой находится загруженный ISO-файл, и запустим следующую команду (запуская эту команду у себя — замените, если нужно, /dev/sdb на путь к вашему USB-диску):
sudo dd if="./ubuntu-20.04.2.0-desktop-amd64.iso" of="/dev/sdb" status="progress" conv="fsync"
После выполнения этой команды нужно будет некоторое время подождать и dd создаст Live USB-диск.
Создание Live USB-диска
Итоги
После завершения работы dd в вашем распоряжении окажется USB-диск, с которого можно загрузиться. Но, пожалуй, важнее то, что теперь вы лучше узнали инструменты командной строки Linux, освоили кое-что новое, позволяющее ускорить и упростить решение некоторых задач.
Чем вы пользуетесь для создания Live USB-дисков в Linux?