Поиск по сайту:

Как клонировать диски с помощью команды Linux dd


На этой странице

  1. ШАГ ПЕРВЫЙ. Уменьшите размер раздела
  2. ШАГ ВТОРОЙ – Клонирование дисков
    1. Пример 1. Клонирование MBR-диска (ОС Windows установлена на втором разделе)
    2. Пример 2. Клонирование GPT-диска (ОС Windows установлена на четвертом разделе)

    В этом руководстве мы рекомендуем обратиться к практическому примеру команды Linux dd, которую системные администраторы могут использовать для переноса или клонирования операционной системы Windows или ОС Linux с жесткого диска большего размера, разделенного в стиле макета MBR или GPT, на меньший твердотельный накопитель. В этом руководстве хорошо использовать в качестве примера систему Windows, установленную на жестком диске с несколькими разделами. Этот метод может стать довольно сложным, если жесткий диск разбит по схеме MBR и содержит расширенный раздел с несколькими логическими разделами или разделы вышли из строя. Я предлагаю вам не использовать этот метод, если это так. В таких случаях безопаснее использовать ddrescure, который может клонировать всю структуру вашего диска (таблицу разделов и используемые блоки внутри каждого раздела), фактически не перенося пустое пространство. DDrescure можно получить, установив пакет gddrescue из основных репозиториев Ubuntu.

    ШАГ ПЕРВЫЙ - Уменьшить раздел

    Вы можете изменить размер раздела Linux или Windows (сжать) до минимального размера, используя живой дистрибутив Linux, такой как Parted Magic. Вы также можете использовать утилиту diskmgmt.msc Microsoft Windows, чтобы сжать раздел NTFS. Уменьшая свободное пространство раздела, время, необходимое dd для копирования неиспользуемых блоков диска, в случае огромных разделов, будет значительно сокращено. В случае большого раздела с небольшим процентом используемого пространства рекомендуется уменьшить файловую систему, потому что утилита dd также скопирует неиспользуемое пространство в процессе (dd также скопирует все свободные блоки раздела размером 100 ГБ или 1 ТБ, который имеет менее 10% используемой площади).

    ШАГ ВТОРОЙ – Клонирование дисков

    После того, как размер раздела был изменен до минимального, физически подключите второй диск или SSD к контроллеру SATA/SCSI машины и загрузите машину с дистрибутивом Live Linux. Как только рабочий дистрибутив Linux будет загружен в оперативную память, откройте консоль Linux и запустите fdisk -l /dev/sda (при условии, что /dev/sda — это ваш установочный диск Windows или диск C: в среде Windows) и запишите последний «Конечный» сектор (44898303, как показано в примере ниже):

    Пример первый — клонирование MBR-диска (ОС Windows установлена на втором разделе)

    В этой тестовой настройке диски перевернуты, поэтому /dev/sdb представляет собой установку Windows на диск, а /dev/sda представляет собой пустой SSD.

    Затем выполните следующую команду с привилегиями root, чтобы клонировать установочный диск Windows с жесткого диска (/dev/sdb) на твердотельный накопитель (/dev/sda). Утилита pv по умолчанию не установлена в Ubuntu. Вы можете установить его, запустив:

    sudo apt install pv

    Затем запустите процесс клонирования, введя следующую команду:

    sudo dd if=/dev/sdb bs=512 count=44898303 conv=sync,noerror | pv -s 21G |sudo dd of=/dev/sda

    ВНИМАНИЕ: размер целевого диска должен быть не меньше общего пространства, занимаемого всеми разделами до раздела Windows с исходного диска, включая раздел Windows.

    Объяснение команд, используемых в приведенном выше примере

    дд - дд означает \Копировать и конвертировать\. Кто-то может сказать, что это расшифровывается как Data Destroyer (если вы вводите команду в заблуждение, может произойти серьезный ущерб) или Data Duplicate или Data Description. Используйте любое описание, которое вам подходит!

    if - исходный диск (в/входном файле)

    bs — значение размера сектора из вывода fdisk (размер блока или количество байтов, которое нужно прочитать/записать за один раз)

    count - Последний сектор \End\ из вывода fdisk, увеличенный на одно целое число (+1) - Сколько блоков размера 512 следует скопировать, прежде чем он остановится. Здесь он должен передать 44099584 сектора размером 512 байт.

    conv=sync,noerror — синхронизировать ввод-вывод и не останавливаться, если вы столкнетесь с блочными ошибками на исходном диске.

    | - Linux pipe (канал межпроцессного взаимодействия в Linux или FIFO)

    pv -s 21GB - следить за ходом клонирования - Примерно 21GB должно быть передано по каналу

    of - целевой диск, на который фактически записываются передаваемые данные (выходной/выходной файл)

    Если вы хотите работать с большим размером блока, чем стандартный размер блока диска (512), скажем, в четыре раза больше стандартного размера блока (2048), для ускорения работы вы можете выполнить простую математику и умножить на четыре стандартный размер блока диска (512x4), а затем разделите общее количество блоков +1 последнего раздела на четыре.

    Другой пример

    В этом примере «Конец» sda2: 44898303+1, разделенное на 4. dd будет работать с размером блока 2048 байт.

    sudo dd if=/dev/sda bs=2048 count=44898303 conv=sync,noerror | pv -s 21G |sudo dd of=/dev/sdb

    После завершения процесса (в зависимости от размера и скорости вашего диска это может занять десять минут или даже часов) проверьте целевой диск с помощью той же команды sfdisk и сравните выходные данные с обоих дисков. Результаты должны быть похожими.

    Пример второй — клонирование GPT-диска (ОС Windows установлена на четвертом разделе)

    В этом отрывке dd будет работать с размером блока, в восемь раз превышающим размер стандартного размера блока (4096), чтобы передавать больше блоков одновременно. ОС Windows находится в четвертом разделе жесткого диска. Все предыдущие разделы Windows также должны быть клонированы. Диск будет полностью скопирован до последнего сектора 19855359, который представляет собой конец границы раздела Windows. Данные, следующие за сектором 19855359+1, представляют раздел D: в Windows, поэтому этот раздел нас не интересует, так как мы хотим клонировать только раздел операционной системы.

    Умножьте на восемь стандартный размер блока диска (512x8), а затем разделите общее количество блоков +1 последнего раздела на восемь, как показано на рисунке ниже. «Конец» sda4, который представляет раздел Windows, равен 19855359+1, разделенному на 8. dd работает с размером блока 4096 байтов.

    sudo dd if=/dev/sda bs=4096 count=2481920 conv=sync,noerror | pv -s 9G |sudo dd of=/dev/sdb

    В этом примере, поскольку копировалась только ОС Windows, а не все данные диска, следующие за четвертым разделом, нам нужно удалить последний раздел. Мы можем удалить его, запустив утилиту командной строки cgdisk прямо из консоли, как показано на следующих снимках экрана.

    Проверьте различия в таблицах разделов на обоих дисках, выполнив команду fdisk. Таблица разделов должна быть аналогичной, за исключением 5-го раздела из /dev/sda, который следует удалить с клонированного диска (/dev/sdb).

    ШАГ ТРЕТИЙ. Проверьте клонированный диск.

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

    Старайтесь не запускать машину с двумя подключенными дисками, потому что это может сбить с толку загрузчик, из-за чего ваша машина не сможет запустить операционную систему. После того, как вы убедитесь, что ваша операционная система загружается нормально, используйте тот же инструмент, что и для сжатия файловой системы, чтобы расширить клонированный раздел, добавив нераспределенное пространство.

    Используя этот метод dd, вы можете перенести любой вариант ОС Windows или Linux со всеми вашими пользовательскими настройками, установленными программами и файлами с жесткого диска большего размера на меньший твердотельный накопитель без необходимости устанавливать ОС с нуля и тратить массу часов на настройку. Это.