Copy disk to file linux

Copy disk to file linux

Команда dd предназначена для задействования одноименной утилиты, предназначенной для низкоуровневого копирования и преобразования данных. Ее название расшифровывается как «data duplicator» или «дупликатор данных». Данная утилита используется главным образом для записи образов установочных дисков дистрибутивов Linux на флеш-накопители и создания образов оптических носителей, тем не менее, круг ее функций не ограничивается перечисленными операциями. Например, dd может использоваться для простого копирования файлов или изменения регистра символов текстовых строк. Вообще, рассматриваемая утилита является в какой-то мере уникальной, ведь она предполагает использование собственного формата передачи параметров.

Стандартный синтаксис команды выглядит следующим образом:

Несложно заметить, что для передачи параметров утилите используется формат записи = . Утилита может читать исходные данные из стандартного потока ввода и выводить результирующие данные с помощью стандартного потока вывода в случае отказа от использования параметров if и of, но в подавляющем большинстве случаев данные параметры являются необходимыми для указания имен файлов с соответствующими данными. Утилита читает и записиывает данные блоками, причем размер блока может изменяться с помощью параметра bs (по умолчанию используются блоки размером в 512 Кб). Существуют отдельные параметры для задания размеров читаемых и записываемых блоков, а именно, ibs и obs. Количество читаемых блоков может ограничиваться в помощью параметра count. Для пропуска заданного количества блоков исходного файла может использоваться параметр skip, целевого файла — параметр seek. Для указания флагов чтения и записи через запятую может использоваться параметр iflag. Наиболее часто используемыми флагами являются:

  • append — активация режима дописывания данных в целевой файл.
  • direct — режим обработки данных в обход кэша файловых систем (повышает скорость).
  • dsync — режим записи данных с синхронизацией (повышает надежность).
  • sync — режим записи данных и метаданных с синхронизацией (повышает надежность).
  • fullblock — чтение лишь полных блоков.
  • nonblock — активация режима неблокируемого ввода/вывода (повышает скорость).
  • noatime — отключение механизма обновления меток времени элементов файловой системы (повышает скорость).
  • nofollow — отказ от перехода по символьным ссылкам.

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

  • lcase — перевод символов строки в кодировке ASCII в нижний регистр.
  • ucase — перевод символов строки в кодировке ASCII в верхний регистр.
  • nocreat — вывод сообщения об ошибке в случае отсутствия целевого файла.
  • excl — вывод сообщения об ошибке в случае существования целевого файла.
  • notrunc — отказ от урезания целевого файла.
  • swab — смена мест каждых двух байтов из исходного файла.
  • noerror — продолжение работы даже в случае возникновения ошибок.
  • fdatasync — активация режима записи данных в целевой файл перед завершением работы утилиты.
  • fsync — активация режима записи данных и метаданных в целевой файл перед завершением работы утилиты.
Читайте также:  Файловая система для nas linux

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

Создание резервной копии данных дискового накопителя

Предположим, мы используем жесткий диск, представленный файлом устройства /dev/sda, и нам нужно создать посекторную резервную копию всех размещенных на нем данных, сохранив ее в файле в разделе съемного диска с интерфейсом USB, представленном файлом устройства /dev/sdb1 и смонтированным в директорию /mnt/sdb1. Обычно такие файлы резервных копий называются дампами или образами дисков. Наш файл образа диска будет носить имя backup.img. Это команда, с помощью которой его можно создать:

# dd if=/dev/sda of=/mnt/sdb1/backup.img

В данной команде с помощью параметра if задается путь к исходному файлу, а с помощью параметра of — к целевому.

Восстановление данных из резервной копии

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

# dd if=/mnt/sdb1/backup1.img of=/dev/sda

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

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

Перед клонированием жесткого диска вы должны убедиться в том, что у вас имеется жесткий диск того же объема, что и исходный. Эта же операция может выполняться и в случае флеш-накопителей с интерфейсом USB аналогичных объемов. Предположим, что исходный флеш-накопитель представлен файлом устройства /dev/sdb, а целевой — файлом устройства /dev/sdc. В этом случае вы можете клонировать исходный накопитель с помощью следующей команды:

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

Передача файла образа диска на другой компьютер

Для передачи файла образа диска по сети на другой компьютер с именем target может использоваться следующая команда:

# dd if=/dev/sdb | ssh [email protected] «(cat >backup.img)»

Сжатие файла образа диска

Для того, чтобы резервная копия раздела диска занимала меньше места, вы можете сжать ее с помощью компрессора, такого, как bzip2:

# dd if=/dev/sdb | bzip2 backup.img.bz2

Создание образа оптического диска формата ISO

Для создания образа оптического диска CD, DVD или BD достаточно поблочно прочитать его содержимое и сохранить это содержимое в файле:

# dd if=/dev/sr0 of=image.iso bs=2048

Сохранение файла с поврежденного носителя или создание образа такого носителя

Если ваш любимый фильм или музыкальный трек больше не читается из-за повреждения носителя, вы можете попробовать скопировать его с помощью утилиты dd, игнорируя поврежденные блоки:

# dd if=movie.avi of=/home/alex/movie.avi conv=noerror,sync

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

Читайте также:  Программное обеспечение компьютера linux

# dd if=/dev/sdb of=/home/alex/movie.iso bs=2048 conv=noerror,sync

Запись образа установочного диска на флеш-накопитель с интерфейсом USB

Для установки дистрибутива Linux с флеш-накопителя с интерфейсом USB необходимо записать на этот флеш-накопитель образ установочного диска формата ISO. Для этой цели может использоваться аналогичная команда:

# dd if=/home/alex/Fedora-Workstation-Live-x86_64-26_Alpha-1.7.iso of=/dev/sdc

Важно помнить, что даже в случае наличия на флеш-накопителе разделов следует указывать не путь к файлу устройства одного из разделов, а путь к файлу устройства самого накопителя, в нашем случае это /dev/sdc.

Анализ содержимого жесткого диска

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

# dd if=/dev/sdc1 count=1 skip=1000

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

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

В данном случае с помощью параметра bs задается размер блока диска.

Тестирование производительности дисковых накопителей

Для тестирования производительности дискового накопителя, представленного, к примеру, файлом устройства /dev/sda в условиях чтения блоков различных размеров может использоваться аналогичная команда:

# dd if=/dev/sda of=/dev/null bs=512 count=1000000
1000000+0 records in
1000000+0 records out
512000000 bytes (512 MB) copied, 4.25186 s, 120 MB/s

# dd if=/dev/sda of=/dev/null bs=4096 count=1000000
1000000+0 records in
1000000+0 records out
4096000000 bytes (4.1 GB) copied, 29.8747 s, 137 MB/s

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

# dd if=/dev/sda of=/dev/null bs=512 count=1000000
1000000+0 records in
1000000+0 records out
512000000 bytes (512 MB) copied, 4.25186 s, 120 MB/s

# dd if=/dev/sda of=/dev/null bs=512 count=1000000
1000000+0 records in
1000000+0 records out
512000000 bytes (512 MB) copied, 0.417317 s, 1.2 GB/s

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

# dd if=/dev/sda of=/dev/null bs=512 count=100000 iflag=direct
100000+0 records in
100000+0 records out
51200000 bytes (51 MB) copied, 5.01053 s, 10.2 MB/s

Копирование файлов

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

$ dd if=/home/alex/test.txt /home/alex/test_copy.txt

Источник

Use dd to Clone a Disk

The dd command in Linux is a powerful utility used to copy and convert a file. As in Linux, everything is considered as a file; even your hard disk drives. Hence, dd can also be used for cloning disks and partitions. The dd utility comes installed in almost all Linux distributions.

The dd utility in Linux can be used to:

  • Clone a disk
  • Clone a partition
  • Backup and restore the entire hard disk or partition.
  • Erase hard drive content
Читайте также:  Uhd 630 driver linux

This post will describe how to use dd to clone a disk in Linux OS. The procedure demonstrated here has been tested on Linux Mint 20. For other Linux distributions, the same procedure can be used for disk cloning.

Note: Before running the dd command to clone the disk to the destination, remember that all the data on the destination will be lost, and you will not be informed about that. Therefore, make sure you specify the correct destination so that you may not lose your valuable data.

dd command syntax

The basic syntax of the dd command is as follows:

Where

  • if: used for specifying an input file
  • source-disk: It is the source disk from where files will be cloned
  • of: used for specifying an output file
  • destination-disk: It is the destination disk where you want to place the copied files
  • option: Different options can be used with the dd command like for progress, speed of file transfer, the format of the file, etc.

Clone an entire disk

  1. First, execute the lsblk command to view all the available disks on your system.

Or you can also use the following command for viewing the disks:

We have three disks /dev/sda, /dev/sdb and /dev/sdc. The /dev/sdb has two partitions /dev/sdb1 and /dev/sdb2. We want to make the exact copy from /dev/sdb to /dev/sdc. Both disks /dev/sdb and /dev/sdc have the same size, 5GB. You can copy a smaller disk to a larger disk, but you cannot copy a larger disk to a smaller one.

This command tells dd to copy the source disk /dev/sdb to the destination disk /dev/sdc and shows the progress of the cloning process.

Once the cloning process has been completed, you will see a similar output.

  1. Now, the cloning has been done. If you run the lsblk command again, you will see that the destination disk /dev/sdc has the same partitions as the source disk /dev/sdb.

Clone a partition from one disk to another

Using the same above described procedure, a partition can be cloned from one disk to another. However, instead of specifying the disk, you will need to specify the partition you want to clone.

For instance, to clone a partition /dev/sdb2 to /dev/sdc2, the command would be:

That is all there is to it! Using the simple procedure described above, you can easily clone a disk or partition in your Linux system.

About the author

Karim Buzdar

Karim Buzdar holds a degree in telecommunication engineering and holds several sysadmin certifications. As an IT engineer and technical author, he writes for various web sites. He blogs at LinuxWays.

Источник

Оцените статью
Adblock
detector