DD(1) | General Commands Manual | DD(1) |
dd
— convert and
copy a file
dd |
[operands ...] |
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
=nfiles
=nfillchar
=cnoerror
and sync
modes,
fill with the specified ASCII character, rather than using a space or
NUL
.ibs
=nif
=fileiflag
=value[,value
...]value
is one of the symbols from the
following list.
fullblock
count
limits the number of times
read(2) is called on the input
rather than the number of blocks copied in full. May not be combined
with conv=sync
.direct
iseek
=nskip
=n.obs
=nof
=filenotrunc
conversion value is specified. If an
initial portion of the output file is seeked past (see the
oseek
operand), the output file is truncated at
that point.oflag
=value[,value
...]value
is one of the symbols from the
following list.
oseek
=nseek
=n.seek
=nNUL
bytes.skip
=nspeed
=nstatus
=valuevalue
is one of the symbols from the
following list.
conv
=value[,value
...]value
is one of the symbols from the
following list.
ascii
,
oldascii
unblock
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 UNIX and
pre-4.3BSD-Reno
systems.block
cbs
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
,
oldibm
block
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 UNIX and
pre-4.3BSD-Reno
systems.fsync
lcase
pareven
,
parnone
, parodd
,
parset
noerror
sync
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
fillchar
option is specified, the fill
character provided on the command line will override the automatic
selection of the fill character. 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).notrunc
dd
. The
notrunc
value is not supported for tapes.osync
bs
=n block size
specification.sparse
NUL
bytes, try to seek the output file by the
required space instead of filling them with
NUL
s, resulting in a sparse file.swab
sync
NUL
bytes are used.ucase
unblock
cbs
operand. Any trailing
space characters are discarded and a newline character is
appended.Where sizes or speed are specified, a decimal, octal, or
hexadecimal number of bytes is expected. If the number ends with a
“b
”,
“k
”,
“m
”,
“g
”,
“t
”,
“p
”, or
“w
”, the number is multiplied by 512,
1024 (1K), 1048576 (1M), 1073741824 (1G), 1099511627776 (1T),
1125899906842624 (1P) or the number of bytes in an integer, respectively.
Two or more numbers may be separated by an
“x
” to indicate a product.
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
(see the status
argument for stty(1)) 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. 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.
The dd
utility exits 0 on success,
and >0 if an error occurs.
Check that a disk drive contains no bad blocks:
dd if=/dev/ada0 of=/dev/null
bs=1m
Do a refresh of a disk drive, in order to prevent presently recoverable read errors from progressing into unrecoverable read errors:
dd if=/dev/ada0 of=/dev/ada0
bs=1m
Remove parity bit from a file:
dd if=file conv=parnone
of=file.txt
Check for (even) parity errors on a file:
dd if=file conv=pareven | cmp -x -
file
To create an image of a Mode-1 CD-ROM, which is a commonly used format for data CD-ROM disks, use a block size of 2048 bytes:
dd if=/dev/cd0 of=filename.iso
bs=2048
Write a filesystem image to a memory stick, padding the end with zeros, if necessary, to a 1MiB boundary:
dd if=memstick.img of=/dev/da0 bs=1m
conv=noerror,sync
The dd
utility is expected to be a
superset of the IEEE Std 1003.2
(“POSIX.2”) standard. The files
and status
operands and the
ascii
, ebcdic
,
ibm
, oldascii
,
oldebcdic
and oldibm
values
are extensions to the POSIX standard.
A dd
command appeared in
Version 5 AT&T UNIX.
May 19, 2021 | macOS 14.6 |