dd
dd [OPERAND]...
dd OPTION
Copy, and optionally convert, a file system resource
Options
Operands
-
bs=BYTES
: read and write up to BYTES bytes at a time (default: 512); overwritesibs
andobs
. -
cbs=BYTES
: the 'conversion block size' in bytes. Applies to theconv=block
, andconv=unblock
operations. -
conv=CONVS
: a comma-separated list of conversion options or (for legacy reasons) file flags. -
count=N
: stop reading input after N ibs-sized read operations rather than proceeding until EOF. Seeiflag=count_bytes
if stopping after N bytes is preferred -
ibs=N
: the size of buffer used for reads (default: 512) -
if=FILE
: the file used for input. When not specified, stdin is used instead -
iflag=FLAGS
: a comma-separated list of input flags which specify how the input source is treated. FLAGS may be any of the input-flags or general-flags specified below. -
skip=N
(oriseek=N
) : skip N ibs-sized records into input before beginning copy/convert operations. See iflag=seek_bytes if seeking N bytes is preferred. -
obs=N
: the size of buffer used for writes (default: 512) -
of=FILE
: the file used for output. When not specified, stdout is used instead -
oflag=FLAGS
: comma separated list of output flags which specify how the output source is treated. FLAGS may be any of the output flags or general flags specified below -
seek=N
(oroseek=N
) : seeks N obs-sized records into output before beginning copy/convert operations. See oflag=seek_bytes if seeking N bytes is preferred -
status=LEVEL
: controls whether volume and performance stats are written to stderr.When unspecified, dd will print stats upon completion. An example is below.
6+0 records in 16+0 records out 8192 bytes (8.2 kB, 8.0 KiB) copied, 0.00057009 s, 14.4 MB/s
The first two lines are the 'volume' stats and the final line is the 'performance' stats. The volume stats indicate the number of complete and partial ibs-sized reads, or obs-sized writes that took place during the copy. The format of the volume stats is
<complete>+<partial>
. If records have been truncated (seeconv=block
), the volume stats will contain the number of truncated records.Possible LEVEL values are:
progress
: Print periodic performance stats as the copy proceeds.noxfer
: Print final volume stats, but not performance stats.none
: Do not print any stats.
Printing performance stats is also triggered by the INFO signal (where supported), or the USR1 signal. Setting the POSIXLY_CORRECT environment variable to any value (including an empty value) will cause the USR1 signal to be ignored.
Conversion Options
-
ascii
: convert from EBCDIC to ASCII. This is the inverse of theebcdic
option. Impliesconv=unblock
. -
ebcdic
: convert from ASCII to EBCDIC. This is the inverse of theascii
option. Impliesconv=block
. -
ibm
: convert from ASCII to EBCDIC, applying the conventions for[
,]
and~
specified in POSIX. Impliesconv=block
. -
ucase
: convert from lower-case to upper-case. -
lcase
: converts from upper-case to lower-case. -
block
: for each newline less than the size indicated by cbs=BYTES, remove the newline and pad with spaces up to cbs. Lines longer than cbs are truncated. -
unblock
: for each block of input of the size indicated by cbs=BYTES, remove right-trailing spaces and replace with a newline character. -
sparse
: attempts to seek the output when an obs-sized block consists of only zeros. -
swab
: swaps each adjacent pair of bytes. If an odd number of bytes is present, the final byte is omitted. -
sync
: pad each ibs-sided block with zeros. Ifblock
orunblock
is specified, pad with spaces instead. -
excl
: the output file must be created. Fail if the output file is already present. -
nocreat
: the output file will not be created. Fail if the output file in not already present. -
notrunc
: the output file will not be truncated. If this option is not present, output will be truncated when opened. -
noerror
: all read errors will be ignored. If this option is not present, dd will only ignore Error::Interrupted. -
fdatasync
: data will be written before finishing. -
fsync
: data and metadata will be written before finishing.
Input flags
count_bytes
: a value tocount=N
will be interpreted as bytes.skip_bytes
: a value toskip=N
will be interpreted as bytes.fullblock
: wait for ibs bytes from each read. zero-length reads are still considered EOF.
Output flags
append
: open file in append mode. Consider setting conv=notrunc as well.seek_bytes
: a value to seek=N will be interpreted as bytes.
General Flags
direct
: use direct I/O for data.directory
: fail unless the given input (if used as an iflag) or output (if used as an oflag) is a directory.dsync
: use synchronized I/O for data.sync
: use synchronized I/O for data and metadata.nonblock
: use non-blocking I/O.noatime
: do not update access time.nocache
: request that OS drop cache.noctty
: do not assign a controlling tty.nofollow
: do not follow system links.
Examples
Make a bootable USB drive from an isohybrid file (such as archlinux-xxx.iso
) and show the progress:
dd if={{path/to/file.iso}} of={{/dev/usb_drive}} status=progress
Clone a drive to another drive with 4 MiB block size and flush writes before the command terminates:
dd bs=4194304 conv=fsync if={{/dev/source_drive}} of={{/dev/dest_drive}}
Generate a file with a specific number of random bytes by using kernel random driver:
dd bs={{100}} count={{1}} if=/dev/urandom of={{path/to/random_file}}
Benchmark the sequential write performance of a disk:
dd bs={{1024}} count={{1000000}} if=/dev/zero of={{path/to/file_1GB}}
Create a system backup, save it into an IMG file (can be restored later by swapping if
and of
), and show the progress:
dd if={{/dev/drive_device}} of={{path/to/file.img}} status=progress
The examples are provided by the tldr-pages project under the CC BY 4.0 License.
Please note that, as uutils is a work in progress, some examples might fail.