dd для копирования только одного раздела iso на нераспределенную часть жесткого диска

dd для копирования только одного раздела iso на нераспределенную часть жесткого диска

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

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

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

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

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

if=сторона:

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

of=сторона:

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

Итак, повторим вопрос:

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

Кстати, поможет ли мне создание нового пустого раздела на жестком диске с «точными» размерами, как у /dev/sdb2или , /dev/loop1p2и использование его в качестве of=аргумента?

решение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в нераспределенное пространство на вашем целевом HDD без создания там раздела. Но:

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

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

Связанный контент