Поможет ли это, если я создам новый пустой раздел на жестком диске с "точными" размерами, /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
.