dd
low-level data copying and conversion tool
TLDR
Make a bootable USB from an ISO and show progress
SYNOPSIS
dd [if=file] [of=file] [bs=bytes] [count=n] [conv=opts] [status=level]
DESCRIPTION
dd converts and copies files at the block level, making it useful for low-level disk operations that bypass filesystem structures. It reads from standard input and writes to standard output by default, but is typically used with if= and of= parameters to specify input and output files or devices.
The tool operates in fixed block sizes (set with bs=), reading and writing data in chunks for efficiency. This block-oriented approach makes dd suitable for creating exact disk images, cloning entire drives, writing bootable USB drives from ISO files, and generating test files of specific sizes.
Common use cases include forensic disk imaging, data backup and restoration, disk benchmarking, and creating files filled with zeros or random data. The status=progress option (added in GNU coreutils 8.24) provides real-time progress information, addressing a long-standing complaint about dd's silence during operation. However, dd provides no safety checks and will overwrite data without confirmation, making it critical to verify the of= parameter before execution.
PARAMETERS
if=FILE
Read from FILE instead of stdinof=FILE
Write to FILE instead of stdoutbs=BYTES
Read and write up to BYTES bytes at a timeibs=BYTES
Read up to BYTES bytes at a timeobs=BYTES
Write BYTES bytes at a timecount=N
Copy only N input blocksskip=N
Skip N input blocks before copyingseek=N
Skip N output blocks before writingconv=CONVS
Conversion options: fsync, notrunc, noerror, syncstatus=LEVEL
Output level: none, noxfer, progressiflag=FLAGS
Input flags: direct, dsync, fullblock, etc.oflag=FLAGS
Output flags: direct, dsync, sync, etc.
CAVEATS
Dangerous: dd will overwrite data without warning. Double-check the of= parameter before executing. Using wrong device names can destroy data.
HISTORY
Part of GNU Coreutils. The command name comes from IBM JCL (Job Control Language) where DD stands for "Data Definition". Available since early Unix.
