Мой вопрос более общий в контексте dd/harddisk/iso-images. Ниже приведены подробности.

У меня есть живой ISO-образ, который содержит два раздела, смонтированные как /dev/loop1p1 и /dev/loop1p2 , и у меня есть жесткий диск с большим количеством нераспределенного пустого пространства в конце. Кроме того, у меня подключен USB-накопитель (с тем же записанным изображением), а содержимое доступно в /dev/sdb1 и /dev/sdb2 .

Итак, моя задача очень проста:

/dev/sdb2 раздел usb (или смонтированный iso /dev/loop1p2) в пустое / нераспределенное пространство на жестком диске.

Я верю, что dd - это путь вперед, как всегда.

if= сторона:

Даже если dd принимает весь диск (/dev/sdb) или разделы (/dev/sdb1 , /dev/sdb2 т.д.) В качестве первого аргумента, if= , оставшийся аргумент of= с жесткого диска (/dev/sda) должен быть однородный &, кажется, решающая сторона.

of= side:

У меня еще нет раздела, созданного на стороне жесткого диска, чтобы передать его в аргумент of of= команды dd . Если я использую полный HDD /dev/sda в качестве дескриптора, существующие разделы на жестком диске будут потеряны, что, безусловно , не желательно.

Итак, чтобы повторить вопрос:

Как мне клонировать конкретный USB-накопитель на жесткий диск?

Помимо этого, будет ли какая-то помощь, если я создам новый пустой раздел на жестком диске с "точными" размерами, /dev/sdb2 или /dev/loop1p2 и использую его в качестве аргумента of= ?

1 ответ1

1

Поможет ли это, если я создам новый пустой раздел на жестком диске с "точными" размерами, /dev/sdb2 или /dev/loop1p2 и использую его в качестве аргумента of= ?

Да, и это, наверное, самый простой способ. Размер не обязательно должен быть одинаковым, он может быть больше. Строго говоря, он должен быть как минимум таким же большим, как файловая система внутри /dev/loop1p2 , которая может быть намного меньше, чем сама /dev/loop1p2 . Способ получения точного размера данной файловой системы зависит от файловой системы (различные инструменты для ext, btrfs и т.д.). Однако наличие файловой системы, меньшей размера ее раздела, является редкостью, поэтому размер /dev/loop1p2 является разумным и безопасным минимумом.

Если новый раздел слишком мал для файловой системы, вы получите нездоровый клон файловой системы, возможно, с отсутствием некоторых данных и / или метаданных. Правильный инструмент fsck может или не может сделать клон формально здоровым, но он не восстановит данные, которые не вписывались в него. Потеря данных может произойти независимо от того, сколько свободного места имеет исходная файловая система.

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

Так что да, размер /dev/loop1p2 , скорее всего, лучший для нового раздела. Некоторые инструменты могут обращать внимание на типы разделов, поэтому вы должны правильно установить идентификатор нового раздела (он отличается для таблицы разделов DOS в таблице разделов MBR и GUID).

Можете ли вы клонировать без создания нового раздела? Да, но это того не стоит.

Узел устройства, такой как /dev/sdx3 является просто полезной абстракцией для доступа к предопределенному фрагменту /dev/sdx (и ничего за пределами этого фрагмента). Это означает, что вместо dd of=/dev/sdx3 вы можете запустить dd of=/dev/sdx с правильным смещением (obs= , seek=), в общем, следя за тем , чтобы вы не писали за фрагмент (count=). Обременительно, но вполне возможно клонировать ваш /dev/sdb2 в нераспределенное пространство на целевом жестком диске без создания там раздела. Но:

  • любая опечатка или ошибка вычисления могут привести к перезаписи части целевого жесткого диска, к которой вы не хотите прикасаться (и тогда вы узнаете, что dd означает "уничтожитель данных");
  • хотя немногие инструменты могут работать с /dev/sdx и offset, вам нужен раздел, такой как /dev/sdx3 чтобы на практике удобно использовать клонированную файловую систему, поэтому рано или поздно вы все равно создадите ее;
  • без разделения пространство, занимаемое клоном, считается свободным; ни один здравомыслящий инструмент не должен использовать его по собственной инициативе, но вы можете забыть точный размер занятого фрагмента или даже тот факт, что он вообще занят.

По этим причинам создание раздела перед клонированием является правильным решением. Как только у вас это есть, of= является правильным способом указать на него dd .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .