Blog.smart-admin.ru

Operands

bs=BYTES

read and write BYTES bytes at a time (also see ibs=,obs=)

cbs=BYTES

convert BYTES bytes at a time

conv=CONVS

convert the file as per the comma separated symbol list. Each symbol may be one of the following, and represents a specific type of conversion:

ascii

from EBCDIC to ASCII

ebcdic

from ASCII to EBCDIC

ibm

from ASCII to alternate EBCDIC

block

pad newline-terminated records with spaces to cbs-size

unblock

replace trailing spaces in cbs-size records with newline

lcase

change upper case to lower case

nocreat

do not create the output file

excl

fail if the output file already exists

notrunc

do not truncate the output file

ucase

change lower case to upper case

swab

swap every pair of input bytes

noerror

continue after read errors

sync

pad every input block with NULs to ibs-size; when used with block or unblock, pad with spaces rather than NULs

fdatasync

physically write output file data before finishing

fsync

likewise, but also write metadata.

count=BLOCKS

copy only BLOCKS input blocks

ibs=BYTES

read BYTES bytes at a time (default: 512)

if=FILE

read from FILE instead of stdin

iflag=FLAGS

read as per the comma separated symbol list. Each symbol may be one of the following:

append

append mode (makes sense only for output; conv=notrunc suggested)

direct

use direct I/O for data

directory

fail unless a directory

dsync

use synchronized I/O for data

sync

likewise, but also for metadata

fullblock

accumulate full blocks of input (iflag only)

nonblock

use non-blocking I/O

noatime

do not update access time

noctty

do not assign controlling terminal from file

nofollow

do not follow symlinks.

obs=BYTES

write BYTES bytes at a time (default: 512)

of=FILE

write to FILE instead of stdout

oflag=FLAGS

write as per the comma separated symbol list

seek=BLOCKS

skip BLOCKS obs-sized blocks at start of output

skip=BLOCKS

skip BLOCKS ibs-sized blocks at start of input

status=noxfer

suppress transfer statistics

Как использовать

Применение DD в Виндовс системах очень похоже на ее использование в командной строке Линукса.

Для открытия страницы с помощью следует зайти в каталог с нужным объектом, а после открытия консоли PowerShell ввести:

Если нужна запасная копия HDD вместе со всей хранящейся на нем информацией, пригодится такая строчка:

Демонстрация того, как создать образ диска F и перенести его на диск Е:

В результате получается:

Расшифруем запись:

  1. Строчка if=/dev/sda отвечает за копирование всего жесткого диска sda.
  2. Задать конкретный объем кэша на жестком диске, который позволит ускорить процесс копирования данных, поможет выражение bs=8M. В противном случае информация начнет переноситься мелкими размерами, примерно по 512 б каждый.
  3. Место, куда будет копироваться файл, указывается командой of=/mnt/backup/sda.img. Первые два выражения означают точку монтирования HDD для хранения образа, то есть папке mnt с подпапкой backup.

Обратите внимание: перед создание бэкапов надо убедиться, что на желаемом диске хватает незанятого пространства. Восстановить HDD из бэкапа поможет команда:

Восстановить HDD из бэкапа поможет команда:

К примеру:

В итоге получится:

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

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

220140
Минск
ул. Домбровская, д. 9

+375 (173) 88-72-49

700
300

ООО «ИТГЛОБАЛКОМ БЕЛ»

700
300

Troubleshooting

Partial read

It is possible, but not guaranteed, that dd will warn you about the issue:

dd: warning: partial read (X bytes); suggest iflag=fullblock

The solution is to do as the warning says and add to the dd command. For example:

$ dd if=/dev/random of=bigsecret.img bs=1K count=1 iflag=fullblock
$ dd if=/dev/urandom of=bigsecret.img bs=40M count=1 iflag=fullblock

Note: It is strongly recommended to always add the option to the dd command when the input file is or .

An alternative for is to specify a block size smaller than 32 MiB, but a larger copy count. For example:

$ dd if=/dev/urandom of=bigsecret.img bs=1M count=40

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

Работа с 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

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

Что делает dd

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

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

Формат параметров представляет собой пару «имя_параметра=значение», например,
if=/имя/входного/файла или of=/имя/файла/результата. Большинство
остальных параметров так или иначе осуществляют управление размерами и количеством блоков чтения и
записи, что и состоавляет главную отличительную особенность утилиты .
Размеры могут быть заданы в блоках (сам блок по умолчанию состоит из 512 байтов) или непосредственно в
байтах. Для числовых значений, обозначающих блоки и байты, возможно использование коэффициентов
k, b и w, обозначающих умножение на 1024, 512 и 2
соответственно. Вместо буквенных коэффициентов можно применять сами числоввые значения, при этом
количество блоков (байтов) от коэффициента отделяется буквой ‘x’, например, 25×1024. В
GNU-версии допускается также использование коэффициентов M (мега), G
(гига) и т.д., и дополнительного суффикса D, который делает значения коэффициентов не
степенями 2, а степенями 10, то есть, kD = 1000 (а не 1024) и тд.

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

dd if=/dev/sda of=/dev/sdb

Если в системе смонтирован dvd-диск, то можно создать его образ:

dd if=/dev/dvd of=dvd.iso

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

dd if=/dev/sdb | bzip2 > sdb.img.bz2

Measuring Write Performance

Modern operating systems do not normally write files immediately to RAID systems or hard disks. Temporary memory that is not currently in use will be used to cache writes and reads (regarding this, see also ).

So that I/O performance measurements will not be affected by these caches (temporary memory), the parameter can be used. Thereby, the following two flags are interesting (for details, see and Dd using direct or synchronized I/O):

  • direct (use direct I/O for data)
  • dsync (use synchronized I/O for data)
  • sync (likewise, but also for metadata)

For measuring write performance, the data to be written should be read from /dev/zero and ideally written it to an empty RAID array, hard disk or partition (such as using of=/dev/sda for the first hard disk or of=/dev/sda2 for the second partition on the first hard disk). If this is not possible, a normal file in the file system (such as using of=/root/testfile) can be written. For safety reasons we are using test files in the following examples. The write performance achieved thereby will be a little slower (because metadata will also be written to the file system).

Important: When writing to a device (such as /dev/sda), the data stored there will be lost. For that reason, you should only use empty RAID arrays, hard disks or partitions.

Note:

  • When using if=/dev/zero and bs=1G, Linux will need 1GB of free space in RAM. If your test system does not have sufficient RAM available, use a smaller parameter for bs (such as 512MB).

Laptop Example

In this example, the test data will be written to /root/testfile. The test system (a Thinkpad T43 Type 2668-4GG) had 1.5 GByte of RAM and a Fujitsu MHT2060AH hard disk rotating at 5,400 rpm.

Laptop Throughput (Streaming I/O)

One gigabyte was written for the test, first with the cache activated (hdparm -W1 /dev/sda):

root@grml ~ # dd if=/dev/zero of=/root/testfile bs=1G count=1 oflag=direct
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 32.474 s, 33.1 MB/s
root@grml ~ # 

Then, with the cache deactivated (hdparm -W0 /dev/sda):

root@grml ~ # dd if=/dev/zero of=/root/testfile bs=1G count=1 oflag=direct    
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 123.37 s, 8.7 MB/s
root@grml ~ # 

Laptop Latency

In this test, 512 bytes were written one thousand times, first with the cache activated (hdparm -W1 /dev/sda):

root@grml ~ # dd if=/dev/zero of=/root/testfile bs=512 count=1000 oflag=direct
1000+0 records in
1000+0 records out
512000 bytes (512 kB) copied, 0.36084 s, 1.4 MB/s
root@grml ~ #

Then, with the cache deactivated (hdparm -W0 /dev/sda): One thousand accesses required 11.18 seconds, meaning one access took 11.18 ms.

root@grml ~ # dd if=/dev/zero of=/root/testfile bs=512 count=1000 oflag=direct
1000+0 records in
1000+0 records out
512000 bytes (512 kB) copied, 11.1865 s, 45.8 kB/s
root@grml ~ # 

Server with RAID10 Example

In this example, the test data was written to an empty partition. The test system was an 2HE Intel Dual-CPU SC823 Server with six 147 GB SAS Fujitsu MBA3147RC (15,000 rpm) hard disks and an Adaptec 5805 RAID controller with the cache activated and a BBU.

Server Throughput (Streaming I/O)

One gigabyte was written for the test:

test-sles10sp2:~ # dd if=/dev/zero of=/root/testfile bs=1G count=1 oflag=dsync
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 5.11273 seconds, 210 MB/s
test-sles10sp2:~ 

Server Latency

In this test, 512 bytes were written one thousand times. Thereby, the 0.084 seconds that were measured for one thousand accesses corresponded to precisely 0.084 ms for each access. This value is so low because of the RAID controller’s cache:

test-sles10sp2:~ # dd if=/dev/zero of=/root/testfile bs=512 count=1000 oflag=dsync
1000+0 records in
1000+0 records out
512000 bytes (512 kB) copied, 0.083902 seconds, 6.1 MB/s
test-sles10sp2:~ #

Утилита dd_rescue

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

dd_rescue /dev/sda1 local_sda1.img

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

dd_rescue /dev/sda1 - | bzip2 > /dir/local_sda1.img.bz2

Ещё один пример, с передачей файла образа раздела диска по сети:

dd_rescue /dev/sda1 - | ssh user@remote.host "cat - > 
/remote/destination/my_sda1.img"

В целом операции и действия похожи на . Но главным
отличием от
является то, что эта утилита не прекращает работу при возникновении ошибок и не пытается выполнять чтение
(или запись) с ошибкой до бесконечности, а обрабатывает возникающие ошибки наилучшим возможным в
конкретной ситуации образом. Здесь можно определить обнуление «плохого» блока после определённого
количества попыток чтения/записи, фиксацию номеров «плохих» блоков в log-файле и запись либо отказ от
записи блоков, обнулённых при ошибках. Такой подход делает программу весьма полезной при извлечении
данных с устройств, при чтении которых возникает слишком много ошибок ввода/вывода.

Описание всех ключей можно получить, выполнив команду .

Утилита dd_rescue

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

dd_rescue /dev/sda1 local_sda1.img

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

dd_rescue /dev/sda1 - | bzip2 > /dir/local_sda1.img.bz2

Ещё один пример, с передачей файла образа раздела диска по сети:

dd_rescue /dev/sda1 - | ssh user@remote.host "cat - > 
/remote/destination/my_sda1.img"

В целом операции и действия похожи на . Но главным
отличием от
является то, что эта утилита не прекращает работу при возникновении ошибок и не пытается выполнять чтение
(или запись) с ошибкой до бесконечности, а обрабатывает возникающие ошибки наилучшим возможным в
конкретной ситуации образом. Здесь можно определить обнуление «плохого» блока после определённого
количества попыток чтения/записи, фиксацию номеров «плохих» блоков в log-файле и запись либо отказ от
записи блоков, обнулённых при ошибках. Такой подход делает программу весьма полезной при извлечении
данных с устройств, при чтении которых возникает слишком много ошибок ввода/вывода.

Описание всех ключей можно получить, выполнив команду .

Типы файлов ISO

Ассоциация основного файла ISO

.ISO

Формат файла: .iso
Тип файла: Disc Image File

The iso file extension is the universal file format for optical media which include binary images of CD, DVD discs, Blu-ray Disc, HD DVD and UMD.International Organization for Standardization (ISO) published ISO 9660 standard at first which targets at supporting diverse operating systems like Microsoft Windows, Mac OS, and Linux.

Создатель: Igor Pavlov
Категория файла: Файлы образов диска
Ключ реестра: HKEY_CLASSES_ROOT\.iso

Программные обеспечения, открывающие Disc Image File:

7-Zip, разработчик — Igor Pavlov

Совместимый с:

Windows
Android
Linux

WinRAR, разработчик — Eugene Roshal

Совместимый с:

Windows
Mac
Android
Linux

Corel WinZip 21, разработчик — Corel

Совместимый с:

Windows
Mac
iOS
Android

VMware Fusion, разработчик — VMware

Совместимый с:

Mac

PowerISO, разработчик — Power Software Ltd

Совместимый с:

Windows

Roxio Creator NXT Pro 5, разработчик — Roxio

Совместимый с:

Windows

Roxio Toast 15, разработчик — Roxio

Совместимый с:

Mac

Nero 2017, разработчик — Nero AG

Совместимый с:

Windows

RARLAB RAR, разработчик — Winrar

Совместимый с:

Mac
Android
Linux

ISO Master, разработчик — Interscape

Совместимый с:

Windows

Alcohol 120%, разработчик — Alcohol Soft

Совместимый с:

Windows

EasyBCD, разработчик — Neosmart technologies

Совместимый с:

Windows

Apple Disk Utility, разработчик — Apple

Совместимый с:

Mac

Brasero, разработчик — Philippe Rouquier & Luis Medinas

Совместимый с:

Linux

K3b, разработчик — KDE

Совместимый с:

Linux

Ассоциации других файлов ISO

.ISO

Формат файла: .iso
Тип файла: Arbortext IsoDraw Document

расширение Жеребьевка файла Arbortext Iso является CAD чертеж, который был создан Arbortext программным обеспечением IsoDraw, что это программа, используемая для создания технических иллюстраций 2D, а также используется для сохранения рисунков для части каталогов, сервисные руководства и инструкции по сборке. Эта программа может быть использована для преобразования импортируемых 3D чертежей в 2D-формат для печати чертежей, то публикации.

Создатель: PTC
Категория файла: Файлы CAD

Программы, открывающие файлы Arbortext IsoDraw Document :

Creo Parametric 3D Modeling Software, разработчик — PTC

Совместимый с:

Windows
Linux

PTC Arbortext IsoDraw, разработчик — PTC

Совместимый с:

Windows

.ISO

Формат файла: .iso
Тип файла: PlayStation 2 ROM File

Расширение файла ROM связан с Sony PlayStation игровой консоли эмулятор и включает в себя целый набор данных, извлеченных из игры в PlayStation 2. Это расширение файла также используется для создания резервных копий PS2 игр и может быть просмотрено и открыто с PlayStation 2 (PS2) эмулятором как PCSX2.

Создатель: Open Source
Категория файла: Файлы образов диска

Программы, открывающие файлы PlayStation 2 ROM File :

PCSX2, разработчик — Open Source

Совместимый с:

Windows
Linux

Использование параметров, управляющих размерами и количеством блоков

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

# dd if=/dev/zero of=/dev/null bs=1M count=32768
32768+0 записей считано
32768+0 записей написано
 скопировано 34359738368 байт (34 GB), 2,35194 c, 14,6 GB/c

дающую представленеие о скорости передачи данных «процессор-память».

Другое, более полезное применение параметров изменения размера и количества блоков — создание
образа MBR (Master Boot Record):

dd if=/dev/sda of=/home/user/archive/MBR.image bs=512 count=1

С помощью можно также при необходимости тестировать и
анализировать производительность жёсткого диска при выполнении операций последовательного чтения/записи
с блоками заданного размера, например, с блокми по 1024 байта

dd if=/dev/zero bs=1024 count=1000000 of=/home/user/tmp/1Gb.file 
dd if=/home/user/tmp/1Gb.file bs=64k | dd of=/dev/null

Утилита dcfldd

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

Типичный пример использования программы на первый
взгляд
может показаться несколько ошеломляющим, но при проходе по каждому параметру всё становится
гораздо проще:

dcfldd if=/dev/sdb4 hash=md5,sha256 hashwindow=10G md5log=md5.txt sha256log=sha256.txt \
  hashconv=after bs=512 conv=noerror,sync split=10G splitformat=aa of=sdb4image.dd

Здесь считываются 10 Гб данных с устройства /dev/sdb4, и эти данные записываются в
файл sdb4image.dd.aa. При этом также вычисляется MD5-хэш и sha256-хэш для копируемого
фрагмента данных. Затем считываются следующие 10 Гб данных и записываются в файл
sdb4image.dd.ab и т.д. Вычисленные хэши сохраняются в файлах md5.txt и
sha256.txt соответственно. Само вычисление хэш-сумм выполняется после всех прочих
преобразований. Размеры блока хэширования и блока, записываемого в выходные файлы (различные),
совпадают. Размер блока копирования 512 байтов. После ошибок чтения выполнение команды не прерывается,
по умолчанию записывает в такие блоки нули.

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

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