| 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.
fullblockcount 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.directiseek=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,
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 UNIX 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 UNIX and
pre-4.3BSD-Reno
systems.fsynclcasepareven,
parnone, parodd,
parsetnoerrorsync 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).notruncdd. The
notrunc value is not supported for tapes.osyncbs=n block size
specification.sparseNUL bytes, try to seek the output file by the
required space instead of filling them with
NULs, resulting in a sparse file.swabsyncNUL bytes are used.ucaseunblockcbs 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=1mDo 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=1mRemove parity bit from a file:
dd if=file conv=parnone
of=file.txtCheck for (even) parity errors on a file:
dd if=file conv=pareven | cmp -x -
fileTo 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=2048Write 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,syncThe 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 15.6 |