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

К чему это руководство
Это пошаговое руководство объясняет, как использовать dd для:
- побитового клонирования диска;
- создания и сжатия образа диска;
- восстановления диска из образа.
Кому полезно: десктопным пользователям, администраторам и техникам, которым нужно переносить или резервировать полные состояния системы.
Важно: dd выполняет операции на низком уровне. Одна неверная буква в пути устройства может привести к потере данных.
Что такое dd (в двух словах)
dd — классическая Unix-утилита для копирования и преобразования данных на побитовом уровне. if — входной файл/устройство (input file), of — выходной файл/устройство (output file). bs задаёт размер блока при чтении/записи.
Почему использовать dd
- Работает во всех Unix-подобных системах (Linux, FreeBSD, macOS).
- Создаёт точные побитовые копии: сохраняются файлы, установки, загрузчик и таблицы разделов.
- Не требует графического интерфейса — удобно на серверах или при аварийном восстановлении.
Когда dd — не лучшая опция: если вы хотите копировать только файлы (а не пустые области) или экономить место без создания полного побитового образа, рассмотрите rsync, partclone или файловые резервные копии.
Подготовка и базовая безопасность
- Подключите целевой диск и убедитесь, что он виден системе.
- Запустите в терминале:
lsblk --output NAME,SIZE,TYPE,MOUNTPOINT
# или
sudo fdisk -l- Определите, какой путь соответствует источнику и цели (например, /dev/sda и /dev/sdb). Никогда не применяйте команды, не перепроверив эти имена.
- Отмонтируйте смонтированные разделы целевого и исходного диска перед операцией:
sudo umount /dev/sdX1- Сделайте контрольную сумму важной персональной информации, если нужно сохранить отдельные файлы.
Важно: используйте sudo или root для всех операций с дисками.
Клонирование всего диска
Побитовое клонирование диска на диск (источник -> цель):
sudo dd if=/dev/sdX of=/dev/sdY bs=4M status=progress conv=noerror,syncПояснения:
- if=/dev/sdX — исходный диск (замените sdX на реальный путь);
- of=/dev/sdY — целевой диск (всё на нём будет перезаписано);
- bs=4M — размер блока 4 мегабайта (обычный выбор для скорости и стабильности);
- status=progress — показывает прогресс выполнения (в современных версиях dd);
- conv=noerror,sync — продолжать при чтении с ошибками и выравнивать блоки нулями.
Примечание: bs задаётся с суффиксами K, M, G (например, 64K, 4M). bs=64 задаст 64 байта — не то, что ожидают многие пользователи.
Создание образа диска в файл
Если вы хотите сохранить образ на другой носитель в виде файла .img:
sudo dd if=/dev/sdX of=/path/to/backup.img bs=4M status=progress conv=noerror,syncЧтобы сохранить пространство, можно сжимать образ «на лету»:
sudo dd if=/dev/sdX bs=4M conv=noerror,sync | gzip -c > /path/to/backup.img.gzИли использовать более быстрый компрессор (если доступен) например pigz:
sudo dd if=/dev/sdX bs=4M conv=noerror,sync | pigz -c > /path/to/backup.img.gzПосле создания образа сделайте контрольную сумму:
sha256sum /path/to/backup.img.gz > /path/to/backup.img.gz.sha256Восстановление из образа или клона
Вариант A — если вы клонировали диск напрямую (swap):
sudo dd if=/dev/sdY of=/dev/sdX bs=4M status=progress conv=noerror,syncВариант B — восстановление из файла .img:
sudo dd if=/path/to/backup.img of=/dev/sdX bs=4M status=progress conv=noerror,syncЕсли образ был сжат (.img.gz):
gunzip -c /path/to/backup.img.gz | sudo dd of=/dev/sdX bs=4M status=progress conv=noerror,syncИли с pv, чтобы отслеживать скорость и время:
pv /path/to/backup.img.gz | gunzip -c | sudo dd of=/dev/sdX bs=4M conv=noerror,syncПараметры dd, которые стоит знать
- bs=SIZE — размер блока (например, 64K, 1M, 4M). Большие значения обычно ускоряют копирование.
- count=NUM — количество блоков для копирования (полезно при частичных копиях).
- skip=NUM — пропустить NUM блоков во входном файле (можно начать копирование с оффсета).
- seek=NUM — пропустить NUM блоков в выходном файле перед записью.
- conv=noerror — не останавливать при ошибках чтения.
- conv=sync — заполнять недостающие байты нулями при ошибках чтения.
- status=progress — вывод прогресса (если поддерживается вашей версией dd).
- oflag=direct — попытаться записывать напрямую в устройство, минуя кэш ОС (в некоторых сценариях улучшает корректность).
Комбинация, часто используемая в полевых задачах:
sudo dd if=/dev/sdX of=/dev/sdY bs=4M status=progress conv=noerror,sync oflag=directПроверка образа и валидация
- Контрольные суммы (sha256sum) образа/файлов.
- Монтирование образа локально для выборочной проверки:
sudo losetup -fP /path/to/backup.img # подключает образ как loop-устройство
sudo mount /dev/loop0p1 /mnt/check # если есть разделы- Попробуйте загрузиться с восстановленного диска в безопасной среде (если это возможно).
Когда dd не подходит (примеры и причины)
- Нужны инкрементальные или дифф-резервные копии — используйте rsync или специализированные решения;
- Требуется копирование только файловой структуры, без пустого пространства — используйте tar/rsync/partclone;
- Файловая система повреждена и требуется восстановление на уровне файловой системы — рассмотрите инструменты fsck, testdisk.
Альтернативные инструменты
- Clonezilla — удобна для массового клонирования и имеет поддержку GUI/TTY;
- GParted / GNOME Disks — удобные GUI-инструменты для разделов и простых операций;
- partclone — копирует только используемые блоки и может экономить место;
- rsync — для копирования файлов и поддержания актуальности данных;
- ddrescue — для восстановления с повреждённых носителей (лучше при наличии ошибок чтения).
Мини-методология: как выполнить безопасное клонирование (коротко)
- Подготовка: резервное копирование критичных данных в другое место;
- Проверка идентификаторов: lsblk, fdisk -l;
- Отмонтирование разделов;
- Выполнение dd с параметрами bs=4M status=progress conv=noerror,sync;
- Проверка контрольной суммы и тестовая загрузка.
Чек-листы по ролям
Администратор:
- Проверить журналы SMART на исходном и целевом диске;
- Выполнить dd в теле maintenance-окна;
- Обновить инвентарный список и SHA256 хеш.
Десктоп-пользователь:
- Сделать резервную копию важных документов отдельно;
- Убедиться, что целевой диск имеет достаточный объём;
- Проверить команды дважды перед выполнением.
Техник на выезде:
- Наличие заведомо исправного кабеля/контроллера;
- Если диск повреждён, использовать ddrescue вместо dd;
- Проверить лог загрузки после восстановления.
SOP: пошаговый сценарий клонирования (короткий шаблон)
- Подключить диск-источник и диск-цель.
- Проверить имена устройств: sudo lsblk.
- Отмонтировать все разделы: sudo umount /dev/sdX*
- Выполнить копирование:
sudo dd if=/dev/sdX of=/dev/sdY bs=4M status=progress conv=noerror,sync oflag=direct- Подтвердить успешность через dmesg и проверку разделов: sudo fdisk -l /dev/sdY
- Создать контрольную сумму: sudo sha256sum /dev/sdY | tee /path/to/sdY.sha256
Критерии приёмки
- Образ или диск полностью записан без критических ошибок;
- Контрольная сумма совпадает с опорной (если она была создана);
- Восстановленная система загружается и приложения запускаются (если применимо);
- Важные файлы присутствуют и читаются корректно.
Тесты и проверка (acceptance)
- Тест 1: проверить структуру разделов (fdisk -l) после клонирования;
- Тест 2: смонтировать раздел и прочитать несколько файлов;
- Тест 3: сравнить контрольные суммы образа и целевого диска.
Типичные ошибки и как их решать
- Неправильный путь устройства (/dev/sdX) — всегда перепроверяйте lsblk;
- dd выполняется от пользователя без прав — используйте sudo;
- Очень медленное копирование — попробуйте увеличить bs до 8M или 16M, либо используйте oflag=direct;
- Повреждённые сектора — используйте conv=noerror,sync или ddrescue для попытки спасения данных.
Соображения по безопасности и конфиденциальности
- Образы содержат все данные целиком — храните их в зашифрованном виде (LUKS, VeraCrypt или хранение в зашифрованном хранилище);
- Удаление старых образов — корректно затирайте носители перед списанием (shred, wipe).
Советы по переходу между системами и совместимости
- При клонировании на диск меньшего объёма либо используйте инструмент, который копирует только используемые блоки, либо заранее уменьшите разделы/ФС (resize), чтобы вместиться;
- При переносе между разными контроллерами SATA/USB проверьте, что загрузочная конфигурация поддерживает целевой контроллер (иногда нужны обновления fstab или grub-install).
Быстрый справочник команд
- Просмотр дисков: lsblk, sudo fdisk -l
- Базовое клонирование: sudo dd if=/dev/sdX of=/dev/sdY bs=4M status=progress conv=noerror,sync
- Создание сжатого образа: sudo dd if=/dev/sdX bs=4M conv=noerror,sync | gzip -c > /path/backup.img.gz
- Восстановление из сжатого образа: gunzip -c /path/backup.img.gz | sudo dd of=/dev/sdX bs=4M status=progress conv=noerror,sync
- Проверка хеша: sha256sum /path/backup.img.gz
Краткое резюме
dd — мощный инструмент для полного клонирования и восстановления дисков в Linux. Он прост по сути, но опасен при небрежном применении. Используйте большие значения bs для скорости, status=progress для контроля, conv=noerror,sync при повреждениях и всегда проверяйте идентификаторы устройств и контрольные суммы.
Важно: если вам нужно экономить место или выполнять инкременты, рассматривайте альтернативы (rsync, partclone, Clonezilla). Если диск повреждён физически, ddrescue часто даёт лучшие результаты.
Похожие материалы
Как купить V‑Bucks на PS5 — быстрое руководство
Memory Saver и Energy Saver в Chrome — как экономят RAM и батарею
Мотивация с Google Календарём
Включить визуализацию звуков в Fortnite
Как слушать подкасты на Amazon Echo