Мой вопрос более общий в контексте 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/sdb2
if=
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
на него.