Гид по технологиям

Клонирование Windows или Linux с HDD на меньший SSD с помощью dd

8 min read Sysadmin Обновлено 27 Nov 2025
Клонирование HDD на SSD с dd
Клонирование HDD на SSD с dd

Зачем это нужно

Клонирование диска полезно, когда вы хотите перенести установленную систему со всеми программами и настройками на более быстрый SSD. Метод пригоден, если разделы целевой SSD могут вместить весь используемый объём исходных разделов, которые вы копируете. Этот подход сохраняет загрузчик и таблицу разделов в границах копируемой области.

Важно: если исходный диск использует сложную MBR-схему с расширенными и логическими разделами или разделы идут не по порядку, лучше использовать gddrescue (ddrescue) или специализированные инструменты для миграции.

Определения в одну строку

  • dd: утилита «копировать и преобразовать» для поблочного чтения и записи дисков.
  • pv: прогресс-бар для потоков данных в Linux.
  • bs: размер блока для чтения/записи в байтах.
  • count: количество блоков для копирования.

Предупреждение и правила безопасности

Важно: Ошибочный выбор дисков при dd приведёт к потере данных. Дважды проверьте идентификаторы /dev/sdX работы с командами fdisk -l и lsblk. Всегда делайте резервную копию критичных данных перед операцией.

Важно: Не загружайте систему с обоими дисками подключёнными после клонирования, пока не уверены в порядке загрузки, чтобы избежать путаницы загрузчика.


Шаг 1 — Уменьшение размера раздела

Перед клонированием уменьшите файловую систему до минимально необходимого размера. Это ускорит работу dd, потому что dd копирует и незанятое пространство внутри копируемых областей.

Как уменьшить:

  • Используйте GParted с Live-образа Ubuntu Desktop или иной live-дистрибутив.
  • В Windows можно использовать встроенный Disk Management (diskmgmt.msc) для уменьшения NTFS-разделов.
  • Коммерческие утилиты: Partition Wizard, Parted Magic.

Почему это важно

  • dd копирует поблочно. Если раздел физически велик (например, 500 ГБ), но занято только 40 ГБ, dd без сжатия всё равно будет читать и писать весь диапазон, если вы копируете до конца раздела или до указанного сектора. Сжатие уменьшает объём копируемых блоков.

Примечание: Если файл-система повреждена или есть bad-блоки, используйте gddrescue (gddrescue) для безопасного клонирования с обработкой ошибок.


Шаг 2 — Подключение и определение границ копирования

  1. Физически подключите SSD к SATA/SCSI-контроллеру.
  2. Загрузитесь с Live-Linux в RAM (например, Ubuntu Live).
  3. Откройте терминал.
  4. Выполните sudo fdisk -l /dev/sda (замените /dev/sda на ваш диск) или lsblk -f.
  5. Найдите раздел, до которого нужно копировать — запомните поле “End” (номер сектора).

Пример вывода и что с ним делать: в примерах ниже показаны реальные сценарии.

Пример 1 — Клонирование диска с MBR, Windows в 2-м разделе

В тестовой конфигурации: исходный Windows диск — /dev/sdb, пустой SSD — /dev/sda.

Клонирование MBR диска

Установите pv, если хотите видеть прогресс:

sudo apt install pv

Вычисление параметров:

  • bs = 512 (стандартный размер сектора, смотрите вывод fdisk)
  • count = последний сектор (End) + 1 — количество 512-байтных блоков для копирования

Пример команды:

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

Расшифровка:

  • if — входной файл (исходный диск)
  • of — выходной файл (целевой диск)
  • conv=sync,noerror — продолжаем при ошибках, синхронизируем блоки
  • | — pipe: передаём поток в pv, затем в конечный dd
  • pv -s 21G — приблизительный объём данных для отслеживания

Важно: целевой диск должен быть по размеру не меньше суммарного занятого пространства до выбранного сектора, в противном случае вы перезапишете заголовки или потеряете данные.

Ускорение через увеличение bs

Можно увеличить bs в 2×, 4×, 8× и т. д. Обычно увеличение до 2048 или 4096 даёт выигрыш в скорости. При увеличении bs нужно делить count на тот же множитель (целочисленное деление).

Пример: bs = 2048 (512×4) — тогда count = (End+1) / 4

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

Пример 2 — Клонирование GPT, Windows в 4-м разделе

Задача: скопировать всё до конца 4-го раздела (включая загрузчик и все предыдущие разделы), но не копировать данные после него (например, D:).

В примере выбран bs = 4096 (512×8). Если End для sda4 = 19855359, то count = (19855359 + 1) / 8 = 2481920.

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

Клонирование GPT диска

После такого частичного копирования может потребоваться удалить лишний 5-й раздел на целевом диске (если он образовался) — сделайте это с помощью cgdisk или fdisk.

cgdisk /dev/sdb
# затем удалите ненужный раздел и запишите таблицу

Проверьте таблицу разделов на обоих дисках командой fdisk -l.

cgdisk

fdisk команда


Шаг 3 — Тестирование клонированного диска

  1. Выключите машину.
  2. Отключите исходный HDD физически.
  3. Подключите только SSD и включите машину.
  4. Если система загружается — поздравляю.

Если не загружается:

  • Проверьте SATA-провода и питание.
  • Проверьте порядок загрузки в BIOS/UEFI.
  • Попробуйте сменить порт SATA (иногда контроллеры имеют приоритет).
  • Для UEFI убедитесь, что раздел EFI присутствует и на нём правильные записи.

После успешной загрузки расширьте файловую систему, чтобы занять оставшееся нераспределённое пространство с помощью GParted или соответствующих утилит (resize2fs для ext4, ntfsresize для NTFS и т. д.).


Критерии приёмки

  • Целевая система корректно загружается с SSD.
  • Все нужные разделы до выбранного сектора скопированы и монтируются.
  • Данные и программы доступны и работают.
  • Не осталось несанкционированного дублирования UUID разделов или конфликтов загрузчика (при необходимости исправьте вручную).

Когда этот метод не подходит (контрпримеры)

  • Исходный диск сильно фрагментирован и содержит много повреждённых блоков — используйте gddrescue.
  • MBR со сложными логическими разделами вне порядкового расположения — рискованно; лучше использовать специализированные инструменты.
  • Если вам нужно снизить объём занимаемого места без рисков — лучше создать чистую установку и перенести данные вручную.

Альтернативные подходы

  • gddrescue (gddrescue) — копирует только использованные блоки и лучше обрабатывает ошибки.
  • Clonezilla — облегчённый интерфейс для клонирования и восстановления; поддерживает сжатие и файл-ориентированные операции.
  • Специальные миграционные утилиты от производителей SSD (часто умеют перенести OS, поправив загрузчик).
  • Создание образа раздела и восстановление его на SSD с последующей подгонкой размеров.

Риски и смягчения

  • Ошибочный of/if: всегда перепроверяйте lsblk и fdisk -l перед запуском.
  • Повреждение таблицы разделов: имейте резервную копию (sfdisk -d /dev/sda > sda-table.backup).
  • Конфликты UUID: при клонировании UUID сохраняются; при необходимости пересоздавайте UUID и обновляйте /etc/fstab.

Резервные команды:

sudo sfdisk -d /dev/sda > sda-table.backup
sudo dd if=/dev/sda of=/path/to/image.img bs=1M status=progress

Чек-лист перед запуском dd (оператор)

  • Сделана полная резервная копия важных данных.
  • Отключены ненужные внешние диски.
  • [ ] Проверены идентификаторы дисков lsblk, fdisk -l.
  • Подготовлен расчёт bs и count.
  • Установлен pv для контроля прогресса (опционально).
  • Целевой диск подходит по физическому объёму.
  • План отката составлен и резервная таблица разделов сохранена.

Playbook: пошаговая инструкция

  1. Подключите SSD.
  2. Загрузитесь с Live-USB.
  3. Откройте терминал и выполните sudo fdisk -l.
  4. Определите номер сектора End раздела, до которого нужно копировать.
  5. Сожмите файловую систему до меньшего размера (GParted или соответствующий инструмент).
  6. Сделайте бэкап таблицы разделов: sudo sfdisk -d /dev/sda > sda-table.backup.
  7. Установите pv: sudo apt install pv.
  8. Рассчитайте bs и count.
  9. Запустите dd-пайп с pv (пример выше).
  10. Дождитесь завершения, проверьте fdisk -l на целевом диске.
  11. Выключите компьютер, отключите исходный HDD и загрузитесь с SSD.
  12. Расширьте разделы при необходимости.

Дерево решений (простое Mermaid)

flowchart TD
  A[Нужна миграция OS на SSD?] --> B{Исходный диск простой?
'MBR без логических разделов
или GPT с обычными разделами'}
  B -- Да --> C[Использовать dd по секторам]
  B -- Нет --> D[Использовать gddrescue или Clonezilla]
  C --> E{Есть ошибки/бэд-блоки?}
  E -- Да --> D
  E -- Нет --> F[Клонировать, затем тестировать]

Советы: типичные ошибки и как их избежать

  • Не используйте dd с неправильным порядком if/of — это обычная причина потерь данных.
  • Не доверяйте размерам по наитию — пользуйтесь fdisk/parted для точных чисел.
  • Если копируете систему с UEFI, убедитесь, что раздел EFI включён в область копирования.
  • При клонировании Windows возможно потребуется восстановить загрузчик через Windows Recovery Environment.

Совместимость и локальные особенности

  • Для Windows на GPT/UEFI: убедитесь, что на целевом диске есть EFI System Partition и записи в NVRAM корректны.
  • Для Linux с LVM: если корень в LVM, клонирование поблочно может потребовать обновления UUID и initramfs.
  • Производители SSD иногда требуют выравнивания разделов по 1MB; GParted по умолчанию делает выравнивание корректно.

Краткая методология проверки (тест-кейсы)

  • TC1: Система загружается в OS после отключения исходного HDD.
  • TC2: Все разделы монтируются и содержат ожидаемые файлы.
  • TC3: Размеры разделов соответствуют ожидаемым после расширения файловой системы.
  • TC4: Отсутствие ошибок в dmesg, связанных с файловой системой.

Примеры команд (шпаргалка)

  • Просмотр дисков и разделов:
sudo fdisk -l
lsblk -f
sudo parted -l
  • Создание резервной копии таблицы разделов:
sudo sfdisk -d /dev/sda > sda-table.backup
  • Базовый dd с pv:
sudo dd if=/dev/sdb bs=512 count=44898303 conv=sync,noerror | pv -s 21G | sudo dd of=/dev/sda
  • dd с увеличенным bs:
sudo dd if=/dev/sda bs=4096 count=2481920 conv=sync,noerror | pv -s 9G | sudo dd of=/dev/sdb

Итог

Метод с dd легко воспроизводим и быстрый для простых сценариев, когда вы копируете непрерывную область диска, содержащую загрузчик и все необходимые разделы. Всегда предварительно уменьшайте файловые системы и проверяйте границы копирования. При сложной схеме разделов или плохом состоянии носителя отдайте предпочтение gddrescue или Clonezilla.

Короткие ключевые рекомендации:

  • Всегда делайте бэкап перед операцией.
  • Дважды проверяйте /dev/идентификаторы.
  • Используйте pv для контроля прогресса.
  • При сбоях используйте специализированные инструменты.

Поясняющая диаграмма dd

Описание изображения: схема объясняющая поток данных между исходным диском и целевым через dd и pv.

Вывод sfdisk

Описание изображения: пример вывода sfdisk для сравнения таблиц разделов исходного и целевого дисков.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство