Вопрос или проблема
Чтобы клонировать раздел с помощью dd.exe
, который поставляется с MSYS2 для Windows, нам нужно 3 части информации.
- имя физического диска
- начальный смещение раздела (в Миб)
- размер раздела (в Миб)
dd if=имя_физического_диска of=backup.img bs=1M skip=начальный_смещение count=размер status=progress
Чтобы перечислить доступные физические дисковые накопители, мы можем использовать команду:
wmic diskdrive get Caption,Index,MediaType
На моей системе это выводит:
Caption Index MediaType
PC SN530 NVMe WDC 512GB 0 Fixed hard disk media
PNY USB 3.0 FD USB Device 1 Removable Media
Я заинтересован в своем NVMe-накопителе, поэтому я использую его индекс (0
), чтобы найти требование #1, которое является именем физического диска:
wmic diskdrive where "Index=0" get DeviceID,Partitions,Status,MediaLoaded
он выводит:
DeviceID MediaLoaded Partitions Status
\\.\PHYSICALDRIVE0 TRUE 8 OK
Два других требования – это начальный смещение раздела и размер раздела. Чтобы перечислить разделы и их атрибуты, я использую команду:
wmic partition where "DiskIndex=0" get Name,Index,Type,StartingOffset,BlockSize,NumberOfBlocks,Size
Она выводит:
BlockSize Index Name NumberOfBlocks Size StartingOffset Type
512 0 Disk #0, Partition #0 614400 314572800 1048576 GPT: System
512 1 Disk #0, Partition #1 727875584 372672299008 449839104 GPT: Basic Data
512 2 Disk #0, Partition #2 225282048 115344408576 373123186688 GPT: Basic Data
512 3 Disk #0, Partition #3 102400 52428800 488467595264 GPT: Basic Data
512 4 Disk #0, Partition #4 2123776 1087373312 488520024064 GPT: Unknown
512 5 Disk #0, Partition #5 2027520 1038090240 489609494528 GPT: Unknown
512 6 Disk #0, Partition #6 39032832 19984809984 490647584768 GPT: Unknown
512 7 Disk #0, Partition #7 2883584 1476395008 510633443328 GPT: Unknown
Теперь мы можем использовать начальное смещение и размер выбранного нами раздела с помощью dd.exe, чтобы клонировать его. Однако этот вывод не дает нам подсказки о содержимом разделов. Для этого нам нужно перечислить тома, чтобы мы могли просмотреть файловые системы и метки отформатированных разделов:
wmic volume where "DriveType=3" get Label,DeviceID,DriveLetter,DriveType,SerialNumber,FileSystem,MaximumFileNameLength,BlockSize,Capacity,FreeSpace
Она выводит:
BlockSize Capacity DeviceID DriveLetter DriveType FileSystem FreeSpace Label MaximumFileNameLength SerialNumber
4096 372672294912 \\?\Volume{41d21340-a487-4021-9735-3e999ccfc734}\ C: 3 NTFS 232339791872 OS 255 3295242676
\\?\Volume{e5ffe5ea-3596-468c-832f-e5bcf2aeb39e}\ 3
512 48234496 \\?\Volume{5792630e-1c80-4d8a-a679-82ec4cd0ecdc}\ 3 FAT32 39666176 GRUBX64 255 716055397
4096 1087369216 \\?\Volume{19df495f-4e17-41fb-bcb0-d33d40588153}\ 3 NTFS 161165312 255 1445116501
4096 1038086144 \\?\Volume{9e1ca148-9cff-4576-ba37-cad1aab53ba1}\ 3 NTFS 501415936 WINRETOOLS 255 4141927052
4096 19984805888 \\?\Volume{0e8ffde2-0844-4d79-ada2-a3ea534dcc6b}\ 3 NTFS 136228864 Image 255 3940616972
4096 1476390912 \\?\Volume{a847a1f9-be5e-4f38-80ff-e5617868e2a1}\ 3 NTFS 505286656 DELLSUPPORT 255 1554162235
4096 310378496 \\?\Volume{9685da03-f3a8-4f89-88f2-1b9dafc3bd38}\ 3 FAT32 203812864 ESP 255 684405683
Если мы можем определить номер раздела тома, который нас интересует, мы можем обратиться к таблице разделов, чтобы найти начальное смещение и размер, чтобы использовать их с dd.exe
, но как мы можем это сделать?
Надежные (уникальные) атрибуты тома – это серийный номер
, deviceID
и (метка
и буква диска
, если таковые имеются). Размер, как правило, ненадежен, так как 2 или более разделов могут иметь одинаковый размер.
Предположим, что нас интересует том DELLSUPPORT
, как мы можем узнать номер его раздела, чтобы мы могли найти его начальное смещение и размер для использования с dd.exe
?
Чтобы скопировать диск с помощью dd
, вам не нужно имя физического диска. Вам нужно указать источник файла, но это будет физическое имя диска, логическое имя диска или фактический файл – не имеет значения.
Если вы хотите сделать резервную копию раздела, вам нужно указать логическое имя для этого раздела. Чтобы получить их, вам нужно использовать стандартный инструмент fdisk
:
# чтобы получить все разделы всех физических дисков:
fdisk -l
# чтобы получить разделы только для основного жесткого диска:
fdisk -l /dev/sda
Еще одно неверное предположение о dd
: вам не нужно указывать начало раздела и размер. Если вы хотите весь раздел – вам нужно только имя. Если вы укажете начало и размер, вы получите только сегмент этого раздела.
Таким образом, чтобы сделать резервную копию загрузочного раздела, вам нужно только:
dd if=/dev/sda1 of=backup.img
Также не рекомендуется смешивать цепочки инструментов (dd
из msys2, wmic
из управления windows). Это возможно, но приводит к множеству путаницы и ненужной конверсии данных. Если вы начали использовать инструменты msys2
– используйте их. Если wmic
вам больше по душе – используйте собственные инструменты резервного копирования Windows.
Ответ или решение
Чтобы успешно клонировать раздел с помощью dd.exe
, который поставляется с MSYS2 для Windows, необходимо получить три важных элемента информации: физическое имя диска, начальный смещение раздела (в Мбайтах) и размер раздела (в Мбайтах). Давайте рассмотрим, как можно получить эти данные.
1. Получение физического имени диска
Для начала необходимо выяснить, какие физические диски доступны на вашем компьютере. Для этого используйте следующую команду в командной строке:
wmic diskdrive get Caption,Index,MediaType
Эта команда покажет список всех доступных физических дисков. Например, вы можете получить следующий вывод:
Caption Index MediaType
PC SN530 NVMe WDC 512GB 0 Fixed hard disk media
PNY USB 3.0 FD USB Device 1 Removable Media
В этом примере мы заинтересованы в NVMe диске, индекс которого равен 0
.
2. Получение информации о разделе
Чтобы получить информацию о разделах на выбранном диске, выполните следующую команду:
wmic partition where "DiskIndex=0" get Name,Index,Type,StartingOffset,BlockSize,NumberOfBlocks,Size
Результат может выглядеть следующим образом:
BlockSize Index Name NumberOfBlocks Size StartingOffset Type
512 0 Disk #0, Partition #0 614400 314572800 1048576 GPT: System
512 1 Disk #0, Partition #1 727875584 372672299008 449839104 GPT: Basic Data
512 2 Disk #0, Partition #2 225282048 115344408576 373123186688 GPT: Basic Data
...
Здесь вы можете найти StartingOffset
и Size
для каждого раздела. Для дальнейшего клонирования нам эти параметры будут необходимы.
3. Получение информации о логических томах
Для того чтобы понять, какие разделы содержат данные, посмотрите информацию о логических томах с помощью следующей команды:
wmic volume where "DriveType=3" get Label,DeviceID,DriveLetter,DriveType,SerialNumber,FileSystem,MaximumFileNameLength,BlockSize,Capacity,FreeSpace
Вывод будет содержать информацию о каждом логическом томе, включая его метку, файловую систему и доступное пространство. Пример вывода:
BlockSize Capacity DeviceID DriveLetter DriveType FileSystem FreeSpace Label
4096 372672294912 \\?\Volume{41d21340-a487-4021-9735-3e999ccfc734}\ C: 3 NTFS 232339791872 OS
...
4. Связывание тома с разделом
Теперь, имея все необходимые данные, определите номер раздела, соответствующий интересующему вас логическому тому. Если, например, вас интересует том с меткой DELLSUPPORT
, вам нужно найти его информацию в выводе, а затем сопоставить её с информацией о разделах.
Чтобы это сделать более надёжно, используйте серийный номер тома, DeviceID или метку (если она доступна) как уникальный идентификатор для сопоставления.
5. Создание резервной копии с помощью dd.exe
После того как вы получили StartingOffset и Size (в Мбайтах) нужного вам раздела, вы можете использовать следующую команду для клонирования:
dd if=\\.\PHYSICALDRIVE0 of=backup.img bs=1M skip=starting_offset count=size status=progress
Это создаст образ раздела. Убедитесь, что вы правильно указали параметры starting_offset
и size
для получения полного или частичного образа нужного вам раздела.
Заключение
Клонирование разделов и управление дисками — это ответственные операции, требующие точности в работе с данными. Следуя приведённым шагам, вы сможете успешно получить информацию о разделе и выполнить его клонирование с использованием dd.exe
. Обязательно создавайте резервные копии важных данных перед выполнением операций, которые могут повредить информацию.