dd command

dd command is used in Unix and Linux systems for low-level file copy. Since everything in a Unix-like system is a file, this makes dd particularly useful for copying disks and specific blocks of data from large files.

Common system administration tasks with dd

  • copy or rewrite boot block on a disk
  • securely erase boot block, section of a disk or whole disk/partition
  • write ISO onto USB stick
  • byte-for-byte copy of a disk or disk partition
  • confirm a disk throughput (MB/sec capability for read/write)

Basic dd command syntax

Most commonly, you’re running the dd with the following parameters:

  • if – input file (or device)
  • of – output file (or device)
  • bs – block size (number of bytes or kilobytes/megabytes if you specify it like 128k or 1m)
  • count – number of blocks that you want to copy (if nothing specified, dd will copy the whole file or disk)

So dd command line looks like this:

dd if=<SOURCE FILE> of=<DESTINATION FILE> bs=<BLOCKSIZE> count=<NUMBER OF BLOCKS>

Writing a disk image onto USB stick in MacOS

$ sudo dd if=./centos.dmg of=/dev/disk9 bs=1m

4311+1 records in

4311+1 records out

4520542208 bytes transferred in 1486.155206 secs (3041770 bytes/sec)

Disk speed with dd in Linux

Another really quick and easy way of using dd command is to indicate the disk throughput.

This example creates a 1GB file using direct I/O, thus reporting an accurate enough I/O capability of the disk under your current filesystem. 423MB/s is a sure enough sign that we are looking at an SSD and not HDD:

greys@s5:~ $ dd if=/dev/zero of=./test bs=512k count=256 oflag=direct
256+0 records in
256+0 records out
134217728 bytes (134 MB) copied, 0.317509 s, 423 MB/s

Know any more cool uses of dd command? Please let me know!

See Also




Keep Learning

Follow me on Facebook, Twitter or Telegram:
Recommended
I learn with Educative: Educative
IT Consultancy
I'm a principal consultant with Tech Stack Solutions. I help with cloud architectrure, AWS deployments and automated management of Unix/Linux infrastructure. Get in touch!

Recent Tweets