В Юниксподобных ОС, команда dd копирует файлы на низком уровне; параллельно может конвертировать некоторые форматы данных.
Данная версия dd ничего не конвертирует, а только копирует данные в среде win32. Пока еще под Win9x не поддерживаются блочные устройства, но это не за горами.
bs означает размер блока (block size). Размер блока может быть указан в байтах или при помощи следующих суффиксов:
Название
Суффикс
Размер
Символы
c
1
Слова
w
2
Двойные слова
d
4
Учетверенные слова
q
8
Килобайты
k
1 024
Мегабайты
M
1 048 576
Гигабайты
G
1 073 741 824
По умолчанию размер блока установлен в 512 байт, что подходит для большинства файлов и устройств, но если увеличить размер блока, то копирование пойдет быстрее. Например копировать флоппи диск с bs=1k count=1440 занимает почти вдвое больше времени, чем с bs=1440k count=1. С другой стороны, увлекаться увеличением размера блока не стоит, так как у Windows может не хватить памяти. Большинство CD/DVD имеют сектора размером 2Кб и, возможно, не будут работать с размерами блока некратными этой величине.
skip Это та часть входного файла, которую программа dd пропустит, прежде чем начать считывать данные. Эта величина указывается в блоках, так что выражение bs=512 skip=10 означает "пропустить 10*512=5120 байт от начала входного файла". Здесь также можно употреблять суффиксы и выражение skip=1k означает приказ пропустить 1024 блока.
seek Это та часть выходного файла, которую программа dd пропустит, прежде чем начать записывать данные. Эта величина указывается в блоках, так что выражение bs=512 skip=10 означает "не записывать 10*512=5120 байт от начала выходного файла". Здесь также можно употреблять суффиксы и выражение skip=1k означает приказ пропустить 1024 блока.
count Это число блоков, которые нужно скопировать. Если не задать этот параметр, то программа dd будет продолжать копирование до конца файла или носителя. Со многими usb носителями это не вполне надежно, так что необходимо использовать опцию --size, чтобы определить размер устройства (см. далее). При задании значения count также можно пользоваться суффиксами, например count=1k скопирует 1024 блока.
Применение опции --size
Обычно, если вы хотите скопировать все устройство целиком при помощи команды dd, то вы не указываете количество блоков, и программа будет считывать данные пока не доберется до конца устройства. Если вы попытаетесь считывать после достижения конца устройства, dd выдаст данные вплоть до конца устройства, а если вы будете продолжать считывать, то получите предупреждение об ошибке. Однако Windows не всегда делает это, поэтому следует применять опцию --size, которая заставит dd выявить конец устройства и не пытаться считывать после его достижения. Это важно для всяких USB накопителей, которые портятся, если пытаться считывать данные после конца их данных. Эта опция не включена по умолчанию, так как определить правильный размер таких устройств бывает невозможно. Кроме того, некоторые устройства, после достижения конца реальных данных, вместо того чтобы выдать сообщение об ошибке, начинают выдавать фиктивные данные.
Применение опции --list
Windows поддерживает несколько способов именовать устройства. Опция --list выдаст правильные названия. Под NT4 работает только метод \\?\Device\Harddisk<n>\Partition<n>. Partition0 - это весь диск целиком.
Под Windows XP, некоторые разделы могут не иметь Тома устройства (Volume device). В этом случае приходится пользоваться именами типа Harddisk<n>\Partition n>.
Windows 2000 и новее имеют Тома устройств (Volume devices), снабженные уникальными идентификаторами - GUID, которые служат названиями дисков или разделов - то, что Микрософт называет Томами. В выводе команды dd --list все они перечислены вместе с возможными точками монтирования. Чаще всего они обозначаются буквой (скажем С:), но могут попадаться и пути к другим файловым системам. Если вы хотите прочитать с помощью dd тот или иной раздел, то не пишите в конце замыкающий обратный слэш (\). Если том не примонтирован, то простого способа идентифицировать его не существует, так что будьте на чеку. Под XP SP2, многие разделы не удается прочитать напрямую, даже если они в данный момент не используются. Работу по прочтению таких разделов я называю "Чтение разделов через черный ход".
Вот пример вывода команды:
dd --list
rawwrite dd for windows version 0.4beta1.
Written by John Newbigin <jn@it.swin.edu.au>
This program is covered by the GPL. See copying.txt for details
Win32 Available Volume Information
\\.\Volume{5cd94d2c-3251-11d9-9444-806d6172696f}\
link to \\?\Device\HarddiskVolume1
fixed media
Mounted on \\.\c:
\\.\Volume{129b1243-3252-11d9-b167-806d6172696f}\
link to \\?\Device\CdRom0
CD-ROM
Mounted on \\.\r:
\\.\Volume{129b1242-3252-11d9-b167-806d6172696f}\
link to \\?\Device\Floppy0
removable media
Mounted on \\.\a:
\\.\Volume{e3429891-0eb9-11da-b18f-000d60dc98cd}\
link to \\?\Device\Harddisk1\DP(1)0-0+3
removable media
Mounted on \\.\d:
NT Block Device Objects
\\?\Device\CdRom0
\\?\Device\Floppy0
\\?\Device\Harddisk0\Partition0
link to \\?\Device\Harddisk0\DR0
Fixed hard disk media. Block size = 512
\\?\Device\Harddisk0\Partition1
link to \\?\Device\HarddiskVolume1
\\?\Device\Harddisk1\Partition0
link to \\?\Device\Harddisk1\DR2
Removable media other than floppy. Block size = 512
\\?\Device\Harddisk1\Partition1
link to \\?\Device\Harddisk1\DP(1)0-0+3
Removable media other than floppy. Block size = 512
Virtual devices
/dev/zero
/dev/random
Применение опции --progress
Эта опция является нестандартным расширением команды dd, которая показывает продвижение работы по мере копирования каждого блока.
Виртуальные устройства
Появились, начиная с версии 0.4beta1.
Так как у Windows нет устройств /dev/zero и /dev/random как в Юниксе, то они были добавлены в программу dd. Их используют как входные файлы (if), когда нужно заполнить файл или раздел нулями, либо псевдослучайными значениями.
Стандартный ввод/вывод
Теперь по умолчанию команда dd использует стандартный ввод (stdin) и стандартный вывод (экран монитора) (stdout), если вы не указали значения if или of. Вы также можете явно задать использование стандартного ввода/вывода, введя значения if=- или of=-. Продвижение работы и сообщения об ошибках теперь выводятся в стандартном сообщении (stderr).
Страховочный фильтр --filter=
Чтобы случайно не переписать не тот диск, созданы страховочные фильтры:
fixed
Пишет только на стационарный диск
removable
Пишет только на сменный диск
disk
Пишет на любой диск
partition
Пишет только в раздел
Подключить фильтр можно переименовав dd.exe на dd-<filter>.exe. Например, dd-removable.exe может писать только на сменный диск, типа USB и CF; так что можно не опасаться испортить стационарный жесткий диск.
Вы можете писать на любые файлы и блочные устройства, на которые вам позволит Windows. Можно использовать стандартную нотацию \\.\ для экспорта устройств win32, либо специальную dd нотацию \\?\ для доступа к "родным" устройствам Windows.
Примечание: Вы не можете записывать CD при помощи этой программы.
Примечание: Флоппи диски чрезвычайно ненадежны. Если вышла ошибка, замените дискету или отформатируйте ее.
No comments:
Post a Comment