| DD(1) | General Commands Manual | DD(1) |
dd — convert and
copy a file
dd |
[operand ...] |
The dd utility copies the standard input
to the standard output. Input data is read and written in 512-byte blocks.
If input reads are short, input from multiple reads are aggregated to form
the output block. When finished, dd displays the
number of complete and partial input and output blocks and truncated input
records to the standard error output.
The following operands are available:
bs=nibs and obs operands. If
no conversion values other than noerror,
notrunc or sync are
specified, then each input block is copied to the output as a single block
without any aggregation of short blocks.cbs=ncount=nskip
(iseek) or seek
(oseek) operations.files=nibs=nif=fileiflag=flagsrdonly’. See the
INPUT AND OUTPUT FLAGS
section for details.iseek=nskip=n.msgfmt=fmtquietprogress.posixhumanWhen fmt does not correspond to any
value given above, it contains a string that will be used as format
specifier for the information summary output. Each conversion
specification is introduced by the character
‘%’. The following ones are
available:
bBeEiIoOsptwPTWobs=nof=filenotrunc conversion value is specified. If an
initial portion of the output file is skipped (see the
seek operand) the output file is truncated at that
point.oflag=flagscreat’. If the
oflag operand is specified, the
‘creat’ flag must be explicitly
included when writing output to a nonexistent file. The value is or'ed
with ‘rdwr’ for the first
open(2) attempt, then, if that
has failed, with ‘wronly’ on the
second attempt. In both cases,
‘trunc’ is automatically added if
none of oseek, seek, or
conv=notrunc operands are used. See the
INPUT AND OUTPUT FLAGS
section for details.oseek=nseek=n.seek=nskip=nprogress=n.’ to be printed (to the standard
error output) for every n full or partial blocks
written to the output file.conv=value[,value ...]ascii,
oldasciiunblock value except that
characters are translated from EBCDIC to ASCII before the records are
converted. (These values imply unblock if the
operand cbs is also specified.) There are two
conversion maps for ASCII. The value ascii
specifies the recommended one which is compatible with
AT&T System V UNIX. The value
oldascii specifies the one used in historic
AT&T and pre-4.3BSD-Reno systems.blockcbs operand. Input records
shorter than the conversion record size are padded with spaces. Input
records longer than the conversion record size are truncated. The
number of truncated input records, if any, are reported to the
standard error output at the completion of the copy.ebcdic,
ibm, oldebcdic,
oldibmblock value except that
characters are translated from ASCII to EBCDIC after the records are
converted. (These values imply block if the
operand cbs is also specified.) There are four
conversion maps for EBCDIC. The value ebcdic
specifies the recommended one which is compatible with
AT&T System V UNIX. The value
ibm is a slightly different mapping, which is
compatible with the AT&T System V
UNIX ibm value. The values
oldebcdic and oldibm
are maps used in historic AT&T and
pre-4.3BSD-Reno systems.lcasenoerrorsync conversion is also specified, any missing
input data will be replaced with NUL bytes (or with spaces if a block
oriented conversion value was specified) and processed as a normal
input buffer. If the sync conversion is not
specified, the input block is omitted from the output. On input files
which are not tapes or pipes, the file offset will be positioned past
the block in which the error occurred using
lseek(2).notruncdd. The
notrunc value is not supported for tapes.osyncbs=n block size
specification.sparseswabsyncucaseunblockcbs operand. Any trailing
space characters are discarded and a newline character is
appended.Where sizes are specified, a decimal number of bytes is expected.
Two or more numbers may be separated by an
‘x’ to indicate a product. Each number
may have one of the following optional suffixes:
b |
block | multiply by 512 |
k |
kibi | multiply by 1024 (1 KiB) |
m |
mebi | multiply by 1048576 (1 MiB) |
g |
gibi | multiply by 1073741824 (1 GiB) |
t |
tebi | multiply by 1099511627776 (1 TiB) |
w |
word | multiply by the number of bytes in an integer |
When finished, dd displays the number of
complete and partial input and output blocks, truncated input records and
odd-length byte-swapping blocks to the standard error output. A partial
input block is one where less than the input block size was read. A partial
output block is one where less than the output block size was written.
Partial output blocks to tape devices are considered fatal errors.
Otherwise, the rest of the block will be written. Partial output blocks to
character devices will produce a warning message. A truncated input block is
one where a variable length record oriented conversion value was specified
and the input line was too long to fit in the conversion record or was not
newline terminated.
Normally, data resulting from input or conversion or both are aggregated into output blocks of the specified size. After the end of input is reached, any remaining output is written as a block. This means that the final output block may be shorter than the output block size.
If dd receives a
SIGINFO signal (see the
status argument for
stty(1)), the current input and
output block counts will be written to the standard error output in the same
format as the standard completion message. If dd
receives a SIGINT signal, the current input and
output block counts will be written to the standard error output in the same
format as the standard completion message and dd
will exit.
There are flags valid for input only
(iflag), for output only
(oflag), or for either.
The flags that apply to both input and output are:
alt_ioasyncSIGIO signaling for I/O.cloexecdirectdirectorydd.exlocknocttynofollownonblocknosigpipeEPIPE instead of raising
SIGPIPE.shlocksyncThe flags that apply to only input are:
The flags that apply to only output are:
The dd utility exits 0 on success,
and >0 if an error occurs.
To write a gzip(1) compressed NetBSD image to a removable drive, with progress(1) output:
zcat NetBSD-9.2-amd64-install.img.gz | \
progress dd of=/dev/rsd0 bs=1m
To print summary information in human-readable form:
dd if=/dev/zero of=/dev/null count=1
msgfmt=humanTo customize the information summary output and print it through unvis(3):
dd if=/dev/zero of=/dev/null count=1 \
msgfmt='speed:%E, in %s seconds\n' 2>&1 | unvis
The dd utility is expected to be a
superset of the IEEE Std 1003.2
(“POSIX.2”) standard. The files
and msgfmt operands and the
ascii, ebcdic,
ibm, oldascii,
oldebcdic and oldibm values
are extensions to the POSIX standard.
A dd utility appeared in
Version 5 AT&T UNIX.
| January 26, 2026 | NetBSD 11.0 |