Using the dd command has the problem that it doesn't show any progress during its operation. Below will be 2 methods of showing the progress of dd.

Use the 'status' argument (from Coreutils 8.24+)

This method uses a new argument which has been implemented in the coreutils package from version 8.24 and up.

The dd command now has an extra argument called status. This arguments accepts the following values:


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

Just an example of how to use the command is:

dd if=/dev/urandom of=/dev/null status=progress

It will then show the progress in the following way:

1948803584 bytes (1.9 GB, 1.8 GiB) copied, 358 s, 5.4 MB/s

Piping dd output through pv (Pipe Viewer)

This method uses an additional application called pv to provide output of the progress. To make use of this the pv package needs to be installed first.

Install the pv tool (if not already installed)

sudo apt-get install pv

Run the dd command combined with the pv command. This is done by first using dd for the input of the file/device, then pipe it to pv, and then pipe it back to dd to output it to a file/device.

dd if=/dev/urandom | pv | dd of=/dev/null

You will then get an output like below:

1,74MB 0:00:09 [ 198kB/s] [ <=> ]

If the size of the file is known the -s option of pv can be used to provide a size. This will alter the output to give a percentage and ETA.

sudo dd if=/dev/sdb | pv -s 2G | dd of=DriveCopy1.dd bs=4096

Will give the following output:

440MB 0:00:38 [11.6MB/s] [======> ] 21% ETA 0:02:19

If using a file as input the pv command can be used directly as input. It will automatically retrieve the file size.

pv image.iso | dd of=/dev/sdb bs=4096

Will give the following output:

440MB 0:00:38 [11.6MB/s] [======> ] 21% ETA 0:02:19

Stephan Wijman • 32 Articles

View Articles