Изучаем команды linux: dd. некоторые особенности использования системной утилиты dd и её модифицированных версий

Внутренние команды

У редактора Sed очень много внутренних команд. Самая главная из них, которая используется чаще других, — это команда замены текстового фрагмента. Чтобы поменять один текстовый фрагмент на другой, используем конструкцию:

На практике это выглядит так:

 $ highload today | sed s/today/yesterday/ (Enter)
 highload yesterday

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

Иногда вместо прямого слеша используется обратный (в другую сторону). Это может быть удобно, если необходимо менять пути к каталогам (path), которые также разделяются прямым слешем. Например, когда имеем дело с каталогами , код выглядит некрасиво, так сказать, с «‎частоколом

Поэтому в роли элемента-разделителя в Sed можно применять альтернативные символы (практически любые) — двоеточие, нижнее подчеркивание, знак шарп, тильда и так далее. 

Поскольку работа потокового редактора завязана на регулярных выражениях, поговорим об их синтаксисе. Любой неспециальный символ — буква или цифра — в программе видятся как регулярные выражения, представляющие сами себя.

Перечислим стандартные обозначения Regex:

  • * (звездочка) после любого символа или выражения означает произвольное количество повторений текста. Оно может быть и нулевым.
  • \+ Определяет число повторов текстового фрагмента не менее одного раза
  • \? Эта команда исключает возможность повторений за исключением одного
  • \{i\} Обозначенное число повторений — i
  • \{i,j\} вариант указания диапазона повторений — от i до j включительно
  • \{i,\} Количество повторений — не менее i
  • \{,j\} Количество повторений — не более j
  • \(RE\) Команда дает возможность оперировать с регулярным выражением как с единым целым. Например, \(а-я\)* определяет поиск любого количества (в том числе и нулевого) строчных букв в любом порядке.
  • . Произвольный символ
  • ^ Данный символ ставится в начале текстового фрагмента, который должен стоять в начале строки. Например, ^#highload_today вызовет поиск строк, начинающихся #highload_today.
  • $ Символ, определяющий конец строки текстового фрагмента
  • Команда поиска всех символов массива. Например, позволит найти буквы r, e, v, o, l , t, y.
  • Данная команда исключает из поиска символы из данного массива. Так, шаблон будет определять поиск любой гласной. Вместо перечисления элементов коллекции можно указывать диапазон.
  • Интервал означает любую строчную букву. Когда возникает необходимость использования квадратной скобки, этот символ указывается первым. Дефис нужно указывать или первым, или последним.
  • RE1\|RE2 Означает первое или второе регулярное выражение 
  • RE1RE2 Команда объединения двух регулярных выражений 
  • \n Показывает символ новой строки
  • \$; \*; \.; \[; \\; \^ Означают соответственно: $; *; .; [; \; ^

Утилита date

Утилита может использоваться для вывода информации о дате, времени, часовом поясе, а также дополнительной информации.

paul@rhel55 ~$ date
Sat Apr 17 12:44:30 CEST 2010

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

paul@rhel55 ~$ date +'%A %d-%m-%Y'
Суббота 17-04-2010

Во всех системах Unix для подсчета времени используется количество секунд, прошедших с 1969 года (первой секундой является первая секунда первого дня января 1970 года). Для вывода времени Unix в секундах может использоваться команда .

paul@rhel55 ~$ date +%s
1271501080

Когда же значение этого счетчика достигнет двух миллиардов секунд?

paul@rhel55 ~$ date -d '1970-01-01 + 2000000000 seconds'
Ср май 18 03:33:20 MSK 2033

4) scrub

Команда scrub может использоваться для перезаписи данных с использованием шаблонов.

Команда по умолчанию недоступна, ее необходимо установить в вашей системе Linux.

Синтаксис

 # scrub  <target> 

Чтобы очистить жесткий диск, вы можете сделать так, как показано ниже.

 # scrub /dev/sda5
scrub: using NNSA NAP-14.1-C patterns
scrub: please verify that device size below is correct!
scrub: scrubbing /dev/sda5 1071644672 bytes (~1022MB)
scrub: random |................................................|
scrub: random |................................................|
scrub: 0x00 |................................................|
scrub: verify |................................................| 

Scrub использует некоторые методы для работы на дисках.

Вы можете использовать метод dod для очистки дисков.

 # scrub -p dod /dev/sda5 -f
scrub: using DoD 5220.22-M patterns
scrub: please verify that device size below is correct!
scrub: scrubbing /dev/sda5 1071644672 bytes (~1022MB)
scrub: random |................................................|
scrub: 0x00 |................................................|
scrub: 0xff |................................................|
scrub: verify |................................................| 

Как работает команда dd?

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

Поскольку в Linux все, в том числе, устройства, считается файлами, вы можете переносить устройства в файлы и наоборот.

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

Как загрузить утилиту dd

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

В загруженном архиве будет несколько файлов, запустить утилиту позволит приложение dd.exe.

Синтаксис команды dd

У данной утилиты странный и слегка сложный синтаксис. Несмотря на это, он весьма прост. Пользоваться программой легко, вы быстро запомните алгоритм и привыкнете к нему.

С использованием параметра «if» потребуется прописать что копировать (источник). В “of” можно написать файл или устройство, например флешку или HDD диск.

Основные параметры:

  • «bs» – количество байт, которые будут читаться и записываться за один раз.
  • «cbs» – число байт, записываемых за один раз.
  • «count» – число скопированных блоков. Размер блока прописывается в опции «bs».
  • «ibs» – чтение определенного числа байт за 1 раз.
  • «obs» – записывание определенного числа байт за 1 раз.
  • «seek» – пропуск определенного числа байт в самом начале устройства во время чтения.
  • «skip» – пропуск определенного числа байт в самом начале при выводе.
  • «status» – подробность вывода.
  • «iflag», «oflag» – создание дополнительных флагов, которые нужны для ввода или вывода.
  • –help – показывает справку.
  • –version – показывает информацию о версии утилиты.

Выше описаны наиболее популярные функции, которые могут потребоваться вам при использовании программы dd Linux.

Примеры команды linux dd

Утилита чаще всего применяется для формирования образов DVD- и CD-дисков. Для их сохранения в виде образа iso существуют определенные команды. Чтобы программа не реагировала на ошибки, можно запустить фильтр noerror. Далее создается образ, который в последующем сохраняется на диск.

Чтобы сделать образ, узнаем разметку диска, с помощью dh.

df -h

Сделаем образ раздела /home, файловая разметка /dev/sda6 в каталог /root/home.iso. В качестве аргумента укажем “noerror” – не выдавать ошибки. Также ограничим  максимальный размер файла на 4096 байт.

dd if=/dev/sda6 of=/root/home.iso bs=4096 conv=noerror

Таким образом делаются образы жестких дисков, флешек, оптических приводов.

Как видно из примера выше, в каталоге /root появился файл home.iso. В дальнейшем его можно развернуть. Он позволит восстановить испорченную в ходе использования систему, в нашем случае файлы каталога home.

Весьма полезный параметр – «bs». Он в значительной мере влияет на скорость работы самой программы. Этот аргумент дает возможность установить размер блока во время передачи информации. Предварительно задается цифровое значение, где указывается один из модификаторов.

Как было сказано выше,  dd Linux позволяет записать информацию на диск или в определенный раздел именно в двоичном виде. В этом случае записываются как нули, так и единицы. Для очистки диска достаточно наполнить его нулями.

Создадим образ диска. Пусть /dev/cdrom1 это наш оптический привод, cdrom.

# dd if=/dev/cdrom1 of=/home/samba/disk/obraz.iso

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

Как перенести Linux на другой диск

Поскольку все данные, настройки и объекты операционной системы Linux — это файлы, то вы можете перенести свою операционную систему куда нужно, просто скопировав все нужные файлы. В Windows так де просто не получится, так, как там более сложная файловая система со сложными зависимостями.

1. Подготовка к переносу

Сначала рассмотрим, как использовать утилиту cp для переноса файлов операционной системы. В папку /mnt примонтируйте раздел, на котором будет располагаться новый Linux. Например, это /dev/sdb1:

Теперь нужно рекурсивно скопировать все файлы из текущего корня в нашу папку /mnt. Лучше всего это делать, загрузившись с LiveCD диска, тогда точно все нужные данные будут сохранены. Но это не обязательно, вы можете делать перенос и работающей системы, только перед этим остановите все запущенные базы данных и сервисы по максимуму, чтобы они сохранили свои настройки и вы ничего не потеряли в новой версии системы. Например, если у вас запущена база данных MariaDB или MySQL, то её нужно остановить:

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

2. Перенос Linux утилитой cp

Далее можно запускать сам перенос Linux на другой диск. Для этого запустите утилиту cp с опциями  -a, -r и -x. Первая опция включает сохранение исходных прав и метаданных файла, вторая — рекурсивный обход файловой системы, а третья ограничивает рекурсию только текущей файловой системой:

Поскольку будут копироваться только файлы из текущей файловой системы, то если ваши каталоги /boot и /home находятся на других разделах, то их нужно скопировать отдельно:

Если вам не нужна домашняя папка, то вы можете её не копировать.

3. Перенос Linux утилитой tar

Это альтернативный вариант переноса, если вы не хотите использовать cp, то можете применить tar. Чтобы сразу перенести файлы в другое расположение, нужно создать туннель, на одном конце которого данные будут запаковываться, а на другом — распаковываться:

Опция -p — заставляет утилиту сохранять метаданные файлов при переносе. Опция —one-file-system указывает, что утилита будет брать файлы только из корневой файловой системы, поэтому все примонтированые файловые системы, как и в предыдущем варианте, будут пропущены. Поэтому каталоги /boot и /home вам придётся копировать аналогичной командой. Или же можно не использовать эту опцию и передавать всё, кроме ненужного:

Вместо опции —one-file-system можно использовать опции —exclude, чтобы исключить ненужные каталоги, как в предыдущей команде. А для распаковки используйте команду:

Здесь, /mnt — это каталог, в который нужно извлечь файлы архива.

4. Перенос с помощью rsync

Утилитой rsync многие не хотят пользоваться, но она очень удобная, работает достаточно быстро и отображает прогресс копирования. Для переноса с помощью rsync выполните:

Эта команда работает аналогично команде tar, копирует всё что есть в новое расположение. Опции -aAX включают сохранение всех метаданных файла, символических ссылок, владельцев, групп, и так далее.

5. Правка /etc/fstab

Далее будем работать только с новой системой. Первым делом нужно исправить файл /etc/fstab, чтобы там был указан правильный UUID корневого раздела. Узнать UUID нужного раздела можно командой blkid:

Теперь замените полученным UUID, значение этого параметра корневого раздела в /mnt/etc/fstab:

6. Установка загрузчика

Далее нужно установить загрузчик Grub в новом Linux. Сначала примонтируйте в него папки /sys, /proc и /dev:

Затем войдите в chroot окружение:

Затем установите загрузчик на тот диск, на который вы переносили Linux, в моём случае это /dev/sdb:

И осталось только создать конфигурационный файл для загрузчика:

В дистрибутивах, не основанных на Ubuntu, вместо update-grub2 можно использовать команду:

7. Перезагрузка

Выйдите из chroot-окружения командой:

Затем размотрируйте системные каталоги и ваш раздел:

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

WSL и WSL 2: сравнение возможностей

На данный момент представлены две реализации подсистемы поддержки Linux. И между WSL и WSL 2 есть важные различия, о которых мы сейчас кратко поговорим.

Если совсем коротко, суть их такова:

При этом из-за разниц подходов в реализации есть различия и в работе. В первой WSL все процессы Linux отображались в «Диспетчере задач», что позволило «убивать» или перезапускать их при необходимости. Во второй версии этого нет (плохая новость), зато там появилось полноценное ядро Linux, ускорение работы системы ввода-вывода, полная совместимость на уровне системных вызовов и так далее (хорошая новость).

Теперь, поняв базовые отличия, переходим к обзору запуска обоих вариантов. Поехали!

Утилиты gzip — gunzip

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

paul@rhel55 ~$ ls -lh text.txt 
-rw-rw-r-- 1 paul paul 6.4M апр 17 13:11 text.txt
paul@rhel55 ~$ gzip text.txt 
paul@rhel55 ~$ ls -lh text.txt.gz 
-rw-rw-r-- 1 paul paul 760K апр 17 13:11 text.txt.gz

Вы можете получить оригинал вашего файла, воспользовавшись утилитой .

paul@rhel55 ~$ gunzip text.txt.gz 
paul@rhel55 ~$ ls -lh text.txt
-rw-rw-r-- 1 paul paul 6.4M апр 17 13:11 text.txt

Примеры использования

Работа с CD/DVD-дисками и образами

Создать образ CD/DVD, используя большой размер блока. Игнорировать ошибки:

    dd if=/dev/cdrom of=backup.iso bs=65536 conv=noerror

Записать ISO-образ «image.iso» на устройство sdb вместе с его загрузочным сектором и форматированием раздела в файловую систему образа (как правило, ISO 9660 или UDF):

    dd if=image.iso of=/dev/sdb

Работа с файлами

Скопировать файл foo в файл bar:

    dd if=foo of=bar

Скопировать файл foo в файл bar, пропустив первые 10 КБ из файла foo:

    dd if=foo of=bar bs=1k skip=10

Порезать 10-мегабайтный файл foo на 2 по 5 МБ:

    dd if=foo of=bar.0 bs=1M count=5
    dd if=foo of=bar.1 bs=1M skip=5

Склеить четыре 100-мегабайтных файла в один:

    dd if=SMILE.001 of=SMILE  bs=1M seek=
    dd if=SMILE.002 of=SMILE  bs=1M seek=100
    dd if=SMILE.003 of=SMILE  bs=1M seek=200
    dd if=SMILE.004 of=SMILE  bs=1M seek=300

а можно и так:

    dd if=SMILE.001 > SMILE
    dd if=SMILE.002 >> SMILE
    dd if=SMILE.003 >> SMILE
    dd if=SMILE.004 >> SMILE

или же (для сбора файла из большого количества кусков):

    for i in {1..4}; do 
        dd if=SMILE.00$i >> SMILE
    done

Примеры выше показывают возможности dd; на практике, обычно, используется cat:

    cat SMILE.00{1,2,3,4} >> SMILE

Вывести на экран (в /dev/stdout) первые 256 байт файла foo:

    dd if=foo of=/dev/stdout bs=128 count=2

или:

    dd if=foo bs=128 count=2

Предыдущая команда годится только для просмотра текстового файла. Содержимое бинарного файла рекомендуется смотреть так:

    dd if=foo bs=1 count=10 2>/dev/null | hexdump

Резервное копирование и удаление данных

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

Скопировать один раздел жёсткого диска на другой жёсткий диск, игнорируя ошибки ввода-вывода:

    dd if=/dev/sda1 of=/dev/sdb2 bs=4096 conv=noerror,sync

Сделать копию главной загрузочной записи (MBR) первого жёсткого диска:

    dd if=/dev/hda of=bootloader.mbr bs=512 count=1

Заполнить всё свободное место в текущем разделе нулями:

    dd if=/dev/zero of=zerofill

Создать сжатый образ первого жёсткого диска со всеми разделами (рекомендуется сначала заполнить свободное место нулями для лучшего сжатия):

    dd if=/dev/sda | xz -9 > MyFuBu.ISO.XZ

Cоздать разбитый на отрезки по 2Gb образ первого жёсткого диска со всеми разделами (со сжатием и без):

    dd if=/dev/sda | xz -9 | split -b 2G --additional-suffix=.xz - MyFuBu.iso.

    dd if=/dev/sda | split -b 2G --additional-suffix=.iso - MyFuBu.

Просмотреть содержимое главной загрузочной записи (MBR) первого жёсткого диска:

    dd if=/dev/sda bs=512 count=1 | hexdump -C

Копировать всё, кроме метки, с диска на магнитную ленту:

    (dd bs=4k skip=1 count= && dd bs=512k) <$disk >$tape

Копировать всё, не перезаписывая метку, с магнитной ленты на диск:

    (dd bs=4k seek=1 count= && dd bs=512k) <$tape >$disk

Уничтожить содержимое устройства , заполнив его «нулями» из :

    dd if=/dev/zero of=/dev/sdg bs=65536

Узнать статус выполнения операции:

    killall -USR1 dd

В некоторых случаях статус выполнения просматривается командой:

    pkill -USR1 -x dd

В последних версиях статус выполнения можно выводить в консоль, задав команду dd с параметром status=progress

Установка и использование подсистемы Linux (WSL)

Для начала мы поговорим о первой версии WSL, которая появилась в версии Windows 10 Build 14251. Эта версия была первой полноценной системой Linux в «десятке».

Однако она не была лишена проблем. Во-первых, таким образом можно было запустить только консольные приложения, хотя в их числе были ssh, MySQL, Apache — все это устанавливалось через собственный менеджер пакетов. Во-вторых, она позволяла использовать лишь ограниченный набор дистрибутивов. В-третьих, первая WSL могла предложить не слишком высокое быстродействие из-за того, что выполнялась фактически в эмуляторе.

При этом система уже могла запускать почти все консольные программы, обновлять их, работать с bash-скриптами и так далее.

Но давайте перейдем к сути и поговорим о том, как можно установить первую WSL в Windows 10.

Шаг 1

Перед установкой любых дистрибутивов Linux в Windows необходимо сначала включить дополнительную функцию «Подсистема Windows для Linux».

Для этого открываем PowerShell от имени администратора (меню Пуск> PowerShell>, правой кнопкой по пункту и «Запуск от имени администратора»). Затем вводим эту команду:

Можно перегрузить компьютер для гарантии.

Шаг 2

Установите желаемый дистрибутив Linux из магазина Microsoft:

microsoft.com

В списке есть такие варианты дистрибутивов:

  • Ubuntu 18.04 LTS
  • Ubuntu 20.04 LTS
  • openSUSE Leap 15.1
  • SUSE Linux Enterprise Server 12 SP5
  • SUSE Linux Enterprise Server 15 SP1
  • Kali Linux
  • Debian GNU/Linux
  • Fedora Remix for WSL
  • Pengwin
  • Pengwin Enterprise
  • Alpine WSL
  • Raft(Free Trial)

Шаг 3

Скачиваем нужный дистрибутив, нажав кнопку «Получить» или Get.

microsoft.com

Помимо этого, можно загрузить нужный дистрибутив через Poweshell. Для этого вводим в Powershell команду:

Вместо «» подставляем нужную ссылку из списка дистрибутивов выше и ждем скачивания.

После этого, устанавливаем с помощью команды:

Где — это название пакета с дистрибутивом в формате .appx.

Также можно скачать дистрибутив с помощью утилиты cURL. Это делается через обычную командную строку. Команда тогда выглядит так:

После скачивания и установки нужно создать имя пользователя и пароль для нового дистрибутива.

microsoft.com

При этом важно, что в первой версии WSL нельзя использовать «графические» приложения — только консольные. Приложения с полноценным графическим окружением есть в WSL 2, к нему мы и переходим

2017-12-16

Создание загрузочной флешки из ISO образа с помощью программы dd

Казалось бы, что нет ничего проще, указал загрузочный iso образ, указал устройство для записи данного образа, и вот тебе готовая загрузочная флешка. Все почти именно так. Но есть одно но. Заключается оно в том, что не всегда можно загрузиться с такой флешки после данных манипуляций. Разберем почему это происходит. Для этого, как всегда немного теории для внесения ясности.

Структура ISO 9660

ISO файл является полной посекторной копией файловой системы компакт диска. На данный момент, существуют два типа файловых систем для компакт дисков, это ISO 9660 и UDF. Первой была ISO 9660. После, с течением времени, когда появилась необходимость переносить фалы большого объема, а так же поддерживать возможность использовать длинные имена хранимых файлов, начали появляться дополнительные модификации для данной файловой системы (Joliet, UDF).

А уже позже, с учетом всех данных требований, была создана файловая система UDF. Которая ныне используется на DVD и BD дисках. Структуры обоих файловых систем схожи.

Размер сектора равен 2048 байт. В самом начале файловой системы присутствует неиспользуемая область размером 32 КБ (32768 байт), расположена в секторах 0-15.

Сектор 16, содержит информацию о первичном, т.е. основном, разделе диска.

Сектор 17, в случае загрузочного диска, содержит запись системы El Torito с адресом загрузочной области Boot Catalog. Данный адрес представлен двухбайтовым числом, что соответствует первым 80 секторам диска (от 0 до FFFF, что равно 65535).

Сектор 18 и последующие, отводятся для хранения файловой таблицы и самих файлов.

Гибридный ISO

Чуть выше, при рассмотрении файловой системы ISO 9660, было сказано о неиспользуемом пространстве в лице первых 16 секторов (первые 32768 байт) данной файловой системы. И это означает, что в этом пространстве может располагаться какая угодно информация. И эта информация никак не повлияет на работу файловой системы компакт диска. Поэтому, в данном пространстве можно разместить, к примеру, загрузочную запись MBR, или EFI раздел с загрузочным исполняемым файлом, либо и то и другое.

Данную возможность как раз и используют на практике для создания так называемых гибридных ISO образов, которые можно использовать как для записи на компакт диск, так и на любой другой накопитель (флешка в том числе) с которого поддерживается загрузка в BIOS/UEFI BIOS системы.

К примеру, вот так выглядит обычный загрузочный ISO в HEX редакторе, а именно его первые сектора.

А вот так, выглядит начало гибридного ISO.

Из вышесказанного следует, что для прямой записи на флешку подходят только гибридные ISO файлы. Для их определения, достаточно проверить HEX редактором первые сектора данных образов. В ОС Windows, для этих целей подойдет бесплатны HEX редактор HxD. А в ОС Linux можно воспользоваться консольной программой hexdump.

Запись ISO образа с помощью консольной программы dd

dd if=image.iso of=\?DeviceHarddisk2Partition0 bs=2048 –progress

dd if=image.iso of=/dev/sda bs=2048

или тоже самое, но уже с отображением прогресса

pv image.iso | dd of=/dev/sda bs=2048

Тестирование

Проверим достоверность всего вышесказанного, записав по одному из типов ISO на флешку, и после загрузившись с данной флешки в виртуальной машине VirtualBox.

Пропуск части входных данных

При необходимости можно задать команде пропустить несколько начальных байтов входных данных. Это осуществляется при помощи опции skip с целочисленным аргументом. Например, если значение этого аргумента N, то dd пропустит N блоков размера ibs. Это ещё одна опция команды, которая определяет число байтов, считываемых за раз (по умолчанию 512).

Если вам требуется пропустить первые 4 байта входного файла, нужно задать ibs равным 4, а аргумент skip равным 1. Таким образом при чтении файла команда пропустит один блок размером 4 байта.

dd if=file1 of=file2 ibs=4 skip=1

Сравним файлы командой grep

grep -v -f file1 file2

Видно, что часть текста при считывании файла file1 были пропущены, поэтому в файле file2 их нет.

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

Для простоты предположим, что исходному жесткому диску соответствует файл устройства , а разделу целевого накопителя — файл устройства . Вы можете скопировать с исходного устройства как содержимое его отдельного раздела (к примеру, ), так и все его содержимое. Для клонирования данных с устройства на устройство мы можем выполнить следующую команду:

sudo dd if=/dev/sda of=/dev/sdb1 bs=64K conv=noerror,sync

В данном случае были использованы следующие аргументы:

  • : устанавливает размер копируемого блока данных (по умолчанию используется значение 512 байт, которое не подходит для жестких дисков большого объема)
  • : сообщает утилите dd о необходимости продолжать работу, игнорируя все ошибки чтения
  • : сообщает утилите dd о необходимости заполнения блоков нулями в случае возникновения ошибок чтения

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

sudo dd if=/dev/sda of=/dev/sdb1 bs=64K conv=noerror,sync status=progress

В результате вы будете получать информацию об объеме скопированных данных в реальном времени.

Кроме того, вы можете скопировать содержимое жесткого диска в обычный файл образа диска. Этот подход немного упростит процесс восстановления содержимого жесткого диска и позволит значительно сэкономить место на целевом накопителе. Для создания файла образа диска утилита dd может использоваться следующим образом:

sudo dd if=/dev/sda conv=sync,noerror bs=64K | gzip -c  > /ПУТЬ/К/КОРНЕВОЙ/ДИРЕКТОРИИ/НАКОПИТЕЛЯ/backup_image.img.gz

Здесь является реальным путем к корневой директории целевого накопителя (в моем случае это ), а не к соответствующему ему файлу устройства.

Я предпочитаю клонировать жесткие диски в файлы образов, а не просто создавать их побайтовые копии на на других дисках. Одним из преимуществ такого подхода является возможность перемещения файла образа практически на любой из доступных накопителей. Если же вы планируете лишь клонировать жесткий диск с целью его последующей замены, вам, разумеется, не придется заниматься созданием файла образа этого диска. Однако, в том случае, если вы хотите создать резервную копию диска в формате файла образа, которая может использоваться впоследствии, в том числе, для создания множества копий диска или вы хотите впоследствии перемешать файл образа диска (по какой-либо причине), последняя команда будет более предпочтительным решением. Еще одним ее достоинством является возможность сжатия файла образа, ведь из-за того, что неиспользуемое пространство диска отлично сжимается, вы получите результирующий файл гораздо меньшего размера.

Утилита locate

Утилита имеет значительное отличие от утилиты , заключающееся в том, что она использует данные индексирования файловой системы для установления путей к файлам. Несмотря на то, что данный алгоритм поиска гораздо быстрее алгоритма с обходом всех директорий файловой системы, в случае его использования данные о файловой системе в подавляющем большинстве случаев являются устаревшими. В том случае, если данные индексирования файловой системы еще не собраны, вам придется осуществить их сбор путем выполнения команды (в дистрибутиве Red Hat Enterprise Linux для выполнения описанной операции понадобятся привилегии пользователя root).

$ locate Samba
locate: не удалось выполнить stat () "/var/lib/mlocate/mlocate.db": Нет такого файла или каталога
$ updatedb 
updatedb: не удалось открыть временный файл для "/var/lib/mlocate/mlocate.db"
$ su -
Password: 
# updatedb
#

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

История

Имя дд является аллюзия на найдена в IBM «s Работа Control Language (JCL), в которой он является сокращением для„Определения данных“. Синтаксис команды похож на оператор JCL больше, чем другие команды Unix, настолько, что Эрик С. Реймонд говорит, что «дизайн интерфейса был явно шуткой». Интерфейс переработан в команде dd Plan 9 для использования стиля параметров командной строки. иногда с юмором называют «Disk Destroyer» из-за его способности стирать диск.

Первоначально предназначенный для преобразования между ASCII и EBCDIC , dd впервые появился в версии 5 Unix . Команда dd указана с момента выпуска 2 руководства по переносимости X / Open от 1987 года. Она унаследована стандартом IEEE Std 1003.1-2008 ( POSIX ), который является частью единой спецификации UNIX .

Встроенная в GNU coreutils версия была написана Полом Рубином, Дэвидом Маккензи и Стюартом Кемпом.

Принцип работы dd Linux

Изначально требуется понять, что представляет собой эта утилита и как она работает. Иными словами, dd Linux – это утилита для копирования данных СР. Нужно заметить, что она используется только для блочного типа информации. Команда способна перенести в пределах одного блока данные, имеющие предварительно выбранный размер, а также информацию из одного места в иное. В ОС Linux устройства являются файлами. У пользователя имеется возможность перенаправлять устройства в файлы, а также совершать операции в обратном порядке.

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

Синтаксис

У данной утилиты странный и слегка сложный синтаксис. Несмотря на это, он весьма прост. Пользоваться программой легко, вы быстро запомните алгоритм и привыкнете к нему.

С использованием параметра «if» потребуется прописать что копировать (источник). В «of» можно написать файл или устройство, например флешку или HDD диск.

Основные параметры:

  • «bs» — количество байт, которые будут читаться и записываться за один раз.
  • «cbs» — число байт, записываемых за один раз.
  • «count» — число скопированных блоков. Размер блока прописывается в опции «bs».
  • «ibs» — чтение определенного числа байт за 1 раз.
  • «obs» — записывание определенного числа байт за 1 раз.
  • «seek» — пропуск определенного числа байт в самом начале устройства во время чтения.
  • «skip» — пропуск определенного числа байт в самом начале при выводе.
  • «status» — подробность вывода.
  • «iflag», «oflag» — создание дополнительных флагов, которые нужны для ввода или вывода.
  • —help — показывает справку.
  • —version — показывает информацию о версии утилиты.

Выше описаны наиболее популярные функции, которые могут потребоваться вам при использовании программы dd Linux.

Примеры

Утилита чаще всего применяется для формирования образов DVD- и CD-дисков. Для их сохранения в виде образа iso существуют определенные команды. Чтобы программа не реагировала на ошибки, можно запустить фильтр noerror. Далее создается образ, который в последующем сохраняется на диск.

Чтобы сделать образ, узнаем разметку диска, с помощью dh.

Сделаем образ раздела /home, файловая разметка /dev/sda6 в каталог /root/home.iso. В качестве аргумента укажем «noerror» — не выдавать ошибки. Также ограничим  максимальный размер файла на 4096 байт.

Таким образом делаются образы жестких дисков, флешек, оптических приводов.

Как видно из примера выше, в каталоге /root появился файл home.iso. В дальнейшем его можно развернуть. Он позволит восстановить испорченную в ходе использования систему, в нашем случае файлы каталога home.

Весьма полезный параметр – «bs». Он в значительной мере влияет на скорость работы самой программы. Этот аргумент дает возможность установить размер блока во время передачи информации. Предварительно задается цифровое значение, где указывается один из модификаторов.

Как было сказано выше,  dd Linux позволяет записать информацию на диск или в определенный раздел именно в двоичном виде. В этом случае записываются как нули, так и единицы. Для очистки диска достаточно наполнить его нулями.

Создадим образ диска. Пусть /dev/cdrom1 это наш оптический привод, cdrom.

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

Заключение

Как видим, использование подсистемы Linux в Windows 10 и 11 — довольно простая штука. Конечно, придется немного повозиться с настройками, однако ничего особо страшного или сложного здесь нет. В такой реализации Linux точно становится ближе к обычному массовому пользователю Windows.

С учетом всего сказанного, нам кажется, что WSL лучше подходит для новичка в мире Unix, а вот WSL 2 с обилием встроенных возможностей (и потенциальных опасностей тоже) идеально подходит для более опытного спеца, который вполне способен самостоятельно держать все под контролем.

Дополнительно о настройке WSL-подсистемы можно узнать в этих видео:

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: