dd - convert and copy a file
This version does not actually do any conversion but it allows the flexible copying of data under in a win32 environment. At the moment block devices under Win9x are not supported but that will be added soon.
Read more about dd in the Wikipedia
Usage
dd [bs=SIZE[SUFFIX]] [count=BLOCKS] if=FILE of=FILE [seek=BLOCKS] [skip=BLOCKS] [--list] [--progress]The block size can be specified in bytes or with one of the following suffix
Description | Suffix | Size |
---|---|---|
Characters | c | 1 |
Words | w | 2 |
Double Words | d | 4 |
Quad Words | q | 8 |
Kilobytes | k | 1,024 |
Megabytes | M | 1,048,576 |
Gigabytes | G | 1,073,741,824 |
The default block size is 512 bytes which will work for most files and devices but the copy will be a lot faster if you use a larger block size. For example a floppy disk read with bs=1k count=1440 takes almost twice as long than if you use bs=1440k count=1. Don't make the block size too large because windows will run out of memory. 1M is probably a good size and upper limit. 1G works but is slow because windows end up swapping. Most CD-ROM have 2k sector size and probably will not work with 512 bytes.
skip is the distance to skip over the input file before reading is commenced. It is in blocks so the distance will be skip * blocksize.
seek is the distance to skip over in the output file before writing is commenced. It is also in blocks do the distance will be seek * blocksize.
If you don't specify a count then the dd will continue until the end of device is reached.
Using --list
Windows provides a number of ways to name a device. The --list
will output the preferred names. Under NT4, only the \\?\Device\Harddisk<n>\Partition<n>
method is available. Partition0
is the entire disk. Under Windows XP, some partitions may not have a Volume device. In this case you can still use the Harddisk\Partition
name.
Windows 2000 and later have Volume devices which are unique GUIDs which identify a disk or partition (what MS call a Volume). These are listed along with any mount point that they may be mounted on. Most of the time this is a drive letter but it may be a path on another filesystem. If you want to read the underlying device, do not include the trailing \ character. If the volume is not mounted there is no easy way to identify it so be careful.
Sample output
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 removeable media Mounted on \\.\a: \\.\Volume{e3429891-0eb9-11da-b18f-000d60dc98cd}\ link to \\?\Device\Harddisk1\DP(1)0-0+3 removeable 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/randomUsing --progress
--progress
is an non-standard enchancement to dd which will show you progess as each block is copied.
Virual devices
Virtual devices are a new feature in version 0.4beta1.
Because windows does not have devices like the unix /dev/zero
or /dev/random
these have been implemented inside dd. You can use these as input files to supply an infinate amount of zeros or psudo random data.
Examples
Make an image of a floppy disk:
dd if=\\.\a: of=c:\temp\disk1.img bs=1440kWrite the image back to a floppy disk:
dd if=c:\temp\disk1.img of=\\.\a: bs=1440kRip an .iso from a CD
dd if=\\?\Device\CdRom0 of=c:\temp\disc1.iso bs=1MRead a USB memory device
dd if=\\.\Volume{c18588c0-02e9-11d8-853f-00902758442b} of=c:\temp\usb1.img bs=1MYou can write to any file or block device which windows will allow you to write to. You can use the standard \\.\
notation for win32 exported devices or the dd specific \\?\
notation to access windows native devices.
Note: You can not write to a CD with this program. Get microsoft cdburn from the resource kip.
Note: Floppy disks are crap. If you get errors, please try another floppy disk or reformatting the disk.
License & Copyright
dd is copyright by me John Newbigin. It is made available under the terms of the GPL. Other licensing is available on request. For more info just email me.
Downloads
Version 0.4beta1
Changes
- --list shows correct syntax for drive letters
- virtual devices added
- other stuff
Package | Platform | Download |
---|---|---|
source .zip | Delphi 5 | N/A |
binary .exe | Windows | dd-0.4beta1.exe |
Version 0.3
Changes
- Modified native device scan to find noncontigiously numbered devices
- Show symlink destinations in device scan
- Open source file with FILE_SHARE_READ
- Stupid bug opening native output devices (assigned handle to input instead of output)
- Stupid bug where native devices were always read only
- addedd progress indicator
Package | Platform | Download |
---|---|---|
source .zip | Delphi 5 | dd-0.3.src.zip |
binary .zip | Windows | dd-0.3.zip |
Alternate versions
This is a list of other dd tools for windows from other projects:
This is a list of other dd tools for linux/unix: