dd — convert and copy a file
Examples (TL;DR)
-
Make a bootable usb drive from an isohybrid file (such like archlinux-xxx.iso) and show the progress:
dd if=file.iso of=/dev/usb_drive status=progress
-
Clone a drive to another drive with 4MB block, ignore error and show progress:
dd if=/dev/source_drive of=/dev/dest_drive bs=4M conv=noerror status=progress
-
Generate a file of 100 random bytes by using kernel random driver:
dd if=/dev/urandom of=random_file bs=100 count=1
-
Benchmark the write performance of a disk:
dd if=/dev/zero of=file_1GB bs=1024 count=1000000
-
Check progress of an ongoing dd operation (Run this command from another shell):
kill -USR1 $(pgrep ^dd)
Synopsis
dd [OPERAND]...
dd OPTION
Description
Copy a file, converting and formatting according to the operands.
- bs=BYTES
read and write up to BYTES bytes at a time (default: 512); overrides ibs and obs
- cbs=BYTES
convert BYTES bytes at a time
- conv=CONVS
convert the file as per the comma separated symbol list
- count=N
copy only N input blocks
- ibs=BYTES
read up to 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
- 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=N
skip N obs-sized blocks at start of output
- skip=N
skip N ibs-sized blocks at start of input
- status=LEVEL
The LEVEL of information to print to stderr; 'none' suppresses everything but error messages, 'noxfer' suppresses the final transfer statistics, 'progress' shows periodic transfer statistics
N 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, P, E, Z, Y. Binary prefixes can be used, too: KiB=K, MiB=M, and so on.
Each CONV symbol may be:
- 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
- ucase
change lower case to upper case
- sparse
try to seek rather than write the output for NUL input blocks
- swab
swap every pair of input bytes
- sync
pad every input block with NULs to ibs-size; when used with block or unblock, pad with spaces rather than NULs
- excl
fail if the output file already exists
- nocreat
do not create the output file
- notrunc
do not truncate the output file
- noerror
continue after read errors
- fdatasync
physically write output file data before finishing
- fsync
likewise, but also write metadata
Each FLAG symbol may be:
- 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
- nocache
Request to drop cache. See also oflag=sync
- noctty
do not assign controlling terminal from file
- nofollow
do not follow symlinks
- count_bytes
treat 'count=N' as a byte count (iflag only)
- skip_bytes
treat 'skip=N' as a byte count (iflag only)
- seek_bytes
treat 'seek=N' as a byte count (oflag only)
Sending a USR1 signal to a running 'dd' process makes it print I/O statistics to standard error and then resume copying.
Options are:
- --help
display this help and exit
- --version
output version information and exit
Reporting Bugs
GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Report any translation bugs to <https://translationproject.org/team/>
Copyright
Copyright © 2019 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
See Also
Full documentation <https://www.gnu.org/software/coreutils/dd>
or available locally via: info '(coreutils) dd invocation'
Referenced By
amanda-devices(7), atari-hd-image(1), buffer(1), buffindexed.conf(5), cstream(1), cycbuff.conf(5), ddpt(8), dd_rescue(1), devio(1), dislocker-fuse(1), fdisk(8), gdcmimg(1), gpart(8), guestfs(3), guestfs-recipes(1), ioping(1), lumina-archiver(1), mkbiarch(8), nwipe(1), pipebench(1), qemu-img(1), randombytes(1), raw(8), rmlint(1), scpio(1), sfdisk(8), sg_dd(8), sgm_dd(8), sgp_dd(8), sg_read(8), sg_xcopy(8), spax(1), srec_examples(1), star(1), swapon(8), truncate(1), virt-sysprep(1), wodim(1), xfs(5), xfs_copy(8), xfs_repair(8), zerofree(8), zip2st(1).