dd
100%

Устройства · Урок 7

dd

Узнайте, как `dd` копирует потоки блоков и как избежать разрушительных ошибок источника, назначения и размера.

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

Вход, выход и размер блока

Общий вид:

$ dd if=input.img of=output.img bs=4M status=progress
  • if= выбирает вход; без него читается стандартный ввод.
  • of= выбирает выход; без него используется стандартный вывод.
  • bs= задаёт размер входного и выходного блока обычного копирования.
  • status=progress просит GNU dd периодически показывать прогресс.

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

Какой операнд выбирает назначение записи dd?

Ограничение копирования

count= ограничивает число обработанных входных блоков. Для обычного файла:

$ dd if=source.img of=prefix.img bs=1M count=2 status=progress

Запрашиваются два блока до 1 MiB, то есть не больше 2 MiB. Короткие чтения усложняют умножение для потоков вроде каналов; GNU dd предлагает iflag=fullblock, когда нужны полные входные блоки. Различайте двоичные единицы и суффиксы локальной реализации.

Какой максимум запрашивает для обычного файла bs=1M count=2?

Запись образа на блочное устройство

Сырое восстановление может выглядеть так:

$ sudo dd if=backup.img of=/dev/sdX bs=4M status=progress conv=fsync

/dev/sdX — намеренно заполнитель, а не готовая команда. Перед заменой:

  1. Имейте проверенную копию всех ценных данных.
  2. Определите цель по модели, серийному номеру, размеру, транспорту и постоянной ссылке через lsblk, udevadm или аналоги.
  3. Убедитесь, что её разделы не смонтированы, не используются как swap, RAID или LVM и не открыты службой.
  4. Повторно проверьте после отключения, перезагрузки или изменения топологии.
  5. Убедитесь, что образ помещается и запись целого устройства действительно нужна.

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

Зачем перед сырой записью проверять модель, serial, размер и использование?

Создание согласованного образа

Чтение живого устройства при изменяющейся файловой системе может дать внутренне несогласованный образ. Предпочитайте размонтированную систему, согласованный снимок приложения или документированный freeze/snapshot. Базы данных и виртуальные машины могут требовать собственную остановку изменений.

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

Почему образ смонтированной изменяющейся файловой системы может быть ненадёжным?

Завершение и проверка

Отсутствие ошибки ввода-вывода не доказывает правильность источника и цели или пригодность образа. Запишите личности и размеры, убедитесь в сбросе буферов на носитель, сравните ограниченное обратное чтение или хеши и проверьте восстановление по плану.

Не обещайте гарантированное стирание через перезапись dd для SSD, flash translation layers, thin provisioning, снимков или переназначенных секторов. Используйте поддерживаемую устройством санитарную очистку и явную политику уничтожения данных.

Чего сам по себе нулевой код dd не доказывает?

Урок завершён

Вы завершили dd

Теперь вы умеете рассматривать dd как сырой копировщик блоков без понимания намерений.

  • Отличать if, of, bs и count.

  • Проверять постоянную личность цели и всех активных потребителей.

  • Создавать образы из согласованного состояния.

  • Сбрасывать данные, проверять и тестировать восстановление.

  • Считать каждый сырой выход потенциально разрушительным.

Сохраните прогресс

Создайте бесплатный аккаунт, чтобы сохранить этот урок и продолжить на любом устройстве.

Создать бесплатный аккаунт
Назад к Устройства