Here’s a couple tips and tricks while using dd on Linux

You can view the status of an on-going dd command (I always forget to run with progress or the version you’re using doesn’t have it)

You will need another terminal window. Not a problem for me as I always use tmux, some people say screen it better.

  1. Find PID of dd process -> ps aux | grep -v grep | grep dd

  2. Send USR1 signal to PID -> kill -USR1 PID_HERE

This same thing can also be one in a single command as follows

kill -USR1 $(pgrep ^dd$)

This is the “right” way (assuming you have dd version above 8.24, this can be checked by dd --version)

This is a normal dd command -> dd if=/path/to/input of=/path/to/output

All you have to do is append status progress -> dd if=/path/to/input of=/path/to/output status=progress

You can also use pv (you might have to install it apt install -y pv)

This can be done -> dd if=/path/to/input | pv | dd of=/path/to/output

You can also use compression

Using XZ (this will use all cores, you can adjust -T however you’d like, it defaults to 1) -> dd if=/path/to/input | xz -T0 > /path/to/output.xz

Using GZIP -> dd if=/path/to/input | gzip > /path/to/output.gz

Here is how to write back to the device

Using xzcat (for xz) -> xzcat -T0 | dd of=/path/to/output

Using zcat (for gzip) -> zcat | dd of=/path/to/output

As with everything I write if you break something it’s not on me, it’s just part of learning and welcome to the ongoing game of learning.

dd is very powerfull and can break your system in a heartbeat so BE CAREFUL.