Меню Рубрики

Ogbcfybt linux dd skip

linux-notes.org

dd (dataset definition) — утилита UNIX, служит для копирования, конвертации файлов, а так же — чтение данных. Название унаследовано от оператора DD (Dataset Definition) из языка JCL.

Поскольку в UNIX многие объекты (жёсткие/гибкие диски, COM/LPT-порты, оперативная память компьютера, память с кодом/данными каждого процесса) представлены в виде специальных файлов, спектр применения утилиты dd гораздо шире, чем кажется на первый взгляд. Регулярно возникает необходимость не просто скопировать файл или несколько файлов (для чего предназначена утилита cp), а скопировать первые n байт файла, пропустить m байт от начала, прочитать файл с дефектного носителя, транслировать содержимое файла в ASCII, «развернуть» порядок байтов в файле (Little-Endian vs. Big-Endian), просто скопировать очень большой файл или все вместе взятое. Для этой цели и служит dd.

Кроме всего прочего, данная утилита позволяет скопировать регионы из файлов «сырых» устройств, например, сделать резервную копию загрузочного сектора жёсткого диска, или прочитать фиксированные блоки данных из специальных файлов, таких, как /dev/zero или /dev/random.

Название утилиты dd иногда в шутку расшифровывают, как «disk destroyer», «data destroyer», «delete data» или «добей диск», так как утилита позволяет производить низкоуровневые операции на жёстких дисках — при малейшей ошибке (такой, как реверс параметров if и of) можно потерять часть данных на диске (или даже все данные). Есть и более «уважительное» прозвище — «disk duplicator», потому что на практике основное её применение — это копии, образы и бэкапы разделов.

  • путь_файлу — Путь к файлу, имеджу от куда будут взяты данные.
  • куда_копировать — Куда будут копироваться даные (флешка, диск, файл)
  • другие_параметры — Различные параметры использования.
  • bs — Данная опция служит для указания размера блока (block size), который будет читать и писать данные за один раз. Например, можно указать 512, 1m, 8m. Рекомендую не использовать большие цифры, оптимально — это 4-8мб;
  • cbs — Данный параметр служит для того, чтобы указать сколько байт нужно записывать за один раз;
  • count — Данная опция указывает сколько копировать блоков, а размер блока задается с bs опцией;
  • conv — Опция служит чтобы преобразовать файл в соответствии с разделенными запятыми списком символов. Каждый символ может быть одним из следующих и представляет определенный тип преобразования: ascii, ebcdic, ibm, block, unblock, lcase, nocreat, excl, notrunc, ucase, swab, noerror, sync, fdatasync, fsync. Описание данных типов, будет ниже.
  • ibs — Данная опция указывает на то, сколько необходимо считать байт за раз (Дефолтное значение — 512 байт);
  • obs — Данная опция указывает на то, сколько необходимо записать байт за раз (Дефолтное значение — 512 байт);
  • seek — Данная опция указывает на то, сколько необходимо пропустить количество байт (obs-size блоков) в начале вывода;
  • skip — Данная опция указывает на то, сколько необходимо пропустить количество байт (ibs-size блоков) в начале ввода;
  • status — Указывает насколько подробным нужно сделать вывод;
  • iflag, oflag — Позволяет задать дополнительные флаги работы для устройства ввода и вывода, основные из них: nocache, nofollow.
  • ascii — Преобразование с EBCDIC в ASCII.
  • ebcdic — Преобразование с ASCII to EBCDIC.
  • ibm — Преобразование с ASCII в алтернативный EBCDIC.
  • blockpad — Завершение новой строкой записи с пробелами в cbs-size.
  • unblock — Заменить конечные пробелы в записях размера cbs новой строкой.
  • lcase — Изменить верхний регистр на нижний регистрe.
  • nocreat — Не создавайть выходной файл.
  • excl — Ошибка, если выходной файл уже существует.
  • notrunc — Не обрезать выходной файл.
  • ucase — Заменить нижний регистр на верхний.
  • swab — Поменять местами каждую пару входных байтов.
  • noerror — Продолжить после ошибок чтения.
  • sync — Дополняет каждый входной блок значениями NUL до размера ibs; при использовании с block или unblock, используеться блок с пробелами, а не NUL.
  • fdatasync — Физически записывает данные выходного файла до окончания процесса.
  • fsync — Аналогично, но также пишуться метаданные.

Параметры для iflag, oflag:

  • append — append mode (имеет смысл только для вывода; conv=notrunc предложение).
  • direct — Использует прямой ввод/вывод (I/O) для данных.
  • directory — Выдает фейл, если используете каталог.
  • dsync — Использовать синхронизированность I/O для данных.
  • sync — Точно так же, но и для метаданных.
  • fullblock — Накапливает полные блоки ввода (iflag только).
  • nonblock — Использует неблокирующий ввод/вывод (I/O).
  • noatime — Не обновляет время доступа (зачастую используеться).
  • noctty — Не назначает управляющий терминал из файла.
  • nofollow — Не переходит по символическим ссылкам.

Для count, seek, skip, bs, cbs, ibs, obs можно использовать слудующую размерность:

Примеры утилиты dd в Unix/Linux

Начнем с самого простого — получить помощь:

Замечаение: в Unix (например на MacOS) может не работать, по этому — имееться следующее решение:

Узнать версию можно вот так:

Замечание: Работат на Linux. На Unix, возможно не будет работать.

-=== ПРИМЕР 1 ===-

Чтобы записать образ на флешку или диск, можно использовать:

-=== ПРИМЕР 2 ===-

Если необходимо скопировать диск на другой, например, можно сделать это следующим образом:

-=== ПРИМЕР 3 ===-

Так же, иногда полезно сжать данные и записать их куда-то (Проверял только с gzip, bzip2). Например, необходимо сделать бэкап. Используем bzip2 сжатие:

Или, используем gzip:

Не забываем комбинировать опции (можно использовать в этом случае: bs=8m, status=progress, conv=fsync)

PS: для рестора можно заюзать:

Можно удаленно создать бэкап, например:

Как другое решение, можно делать бекап по указанному времени и бэкапить его по сети. Например:

PS: Стоит добавить SSH ключи ssh будет работать такая схема

-=== ПРИМЕР 4 ===-

Чтобы отформатировать накопитель низкоуровневым способом используя dd, пример выглядит вот так:

PS: Можно обнулить только определенное количество байт, например:

Проверить можно тем же dd, но преобразовав данные в hex:

Должны быть 0. Или, можно проверить еще другим методом:

Можно для тестирования, взять и скопировать 10 ГБ нулей и перенаправить их в /dev/null (в никуда):

Уничтожить суперблок можно:

или еще один солюшен:

Чтобы очистить первые 113 МБ раздела:

-=== ПРИМЕР 5 ===-

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

Чтобы восстановить, используем:

Если нужно сделать резервное копирование загрузочных данных MBR, исключая таблицу разделов, то пример вот:

Вернуть назад можно так:

Cкопировать MBR на дискету:

Просмотр MBR-а через dd утилиту:

-=== ПРИМЕР 6 ===-

При помощи dd можно генерировать файлы, а затем использовать их как контейнеры других файловых систем даже в зашифрованном виде. Технология следующая:
С помощью dd создается файл, забитый нулями (случайными числами забивать не рационально: долго и бессмысленно):

Заполнить диск рандомными значениями:

Затереть файл\диск n-раз, можно так (в моем случаее, будет перезапись 20 раз):

-=== ПРИМЕР 7 ===-

Создаем ISO из CD/DVD ROM-а на локальное устройство (файл на вашем диске):

Создать DVD образы раздела (полезно для резервного копирования):

После такого копирования, можно развернуть все назад следующим образом:

Создать ISO из флопика можно вот так:

-=== ПРИМЕР 8 ===-

Преобразовать формат данных файла( пример с EBCDIC в ASCII):

Преобразовать формат данных файла( пример с ASCII в EBCDIC):

-=== ПРИМЕР 9 ===-

Например у вас есть файл с текстом:

Если нужно сконвертировать содержимое файл в верхний регистр:

Если нужно сконвертировать содержимое файла в нижний регистр:

-=== ПРИМЕР 10 ===-

Для просмотра вашей виртуальной памяти служит команда:

-=== ПРИМЕР 11 ===-

Чтобы проверить какие файловые системы установлены, выполните:

-=== ПРИМЕР 12 ===-

Проверить все загруженные модули с помощью dd:

-=== ПРИМЕР 13 ===-

Для посмотра таблицы прерываний, есть команда:

-=== ПРИМЕР 14 ===-

Проверить сколько секунд работала система:

-=== ПРИМЕР 15 ===-

Чтобы проверить разделы и так же, их размеры (в кб), используем:

-=== ПРИМЕР 16 ===-

Вывод статистики памяти:

-=== ПРИМЕР 17 ===-

Хороший способ проверить наличие бэдов на устройстве с командой dd:

-=== ПРИМЕР 17 ===-

Так же, можно с данной утилитой проверить файл на вирусы (но нужен для этого, нужно установить ClamAV):

-=== ПРИМЕР 18 ===-

Тестируем скорость чтения/записи жестких дисков:

-=== ПРИМЕР 19 ===-

Вывести файл на стандартный вывод можно вот так:

-=== ПРИМЕР 20 ===-

Нашел еще пример, с которым можно выполнить поиск какой-то строки по всему разделу (Даже если наложена секьюрити), то можно использовать LiveCD и загрузиться с ним и выполнить:

-=== ПРИМЕР 21 ===-

Чтобы считать BIOS, выполните:

-=== ПРИМЕР 22 ===-

Нашел забавный пример:

-=== ПРИМЕР 23 ===-

Убрать/проигнорировать первые 111 байтов стандартного ввода:

-=== ПРИМЕР 24 ===-

Делаем быстрое резервное копирование по сети с использованием Netcat:

-=== ПРИМЕР 25 ===-

Создаем временное пространство подкачки:

-=== ПРИМЕР 26 ===-

Определите скорость последовательного ввода-вывода вашего привода. Чтение 1 ГБ файла:

-=== ПРИМЕР 27 ===-

Можно добавить прогресс бар, например:

-=== ПРИМЕР 28 ===-

Генерируем рандомную строку с 32 символами ( задали их):

На этом у меня все, статья «Утилита dd в Unix/Linux» завершена.

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Можно ли установить mac os на обычный ноутбук
  • Можно ли установить mac os на ноутбук dell
  • Можно ли установить mac os на ноутбук asus
  • Можно ли установить mac os на внешний жесткий диск
  • Можно ли установить mac os на amd процессоры