Linux and Unix dd command

Quick links

About dd
Syntax
Examples
Related commands
Linux and Unix main page

About dd

The dd command copies a file, converting the format of the data in the process, according to the operands specified.

Syntax

dd [OPERAND]...
dd OPTION

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

Options

--help Display help and exit.
--version Display version information and exit.

Numerical Suffixes

BLOCKS and BYTES may be followed by the following multiplicative suffixes:

c=1
w=2
b=512
kB=1000
K=1024
MB=1000*1000
M=1024*1024
xM=M
GB=1000*1000*1000
G=1024*1024*1024

and so on for T (terabytes), P (petabytes), E (exabytes), Z (zettabytes), and Y (yottabytes).

Examples

Caution: Use dd cautiously, improperly entering the wrong values could inadvertently wipe, destroy, or overwrite the data on the hard drive.

dd if=/dev/sr0 of=/home/hope/exampleCD.iso bs=2048 conv=noerror,sync

Create a ISO disc image from the CD in the computer.

dd if=/dev/sda of=~/disk1.img

Create an img file of the /dev/sda hard drive. To restore that image type: dd if=disk1.img of=/dev/sda

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

Copy the contents from the if= drive /dev/sda to the of= drive /dev/sdb.

Related commands

cp
fdisk