Dd progress
From KCLUG Wiki
This gets the pid's of all dd processes, and sends each of them the USR1 signal. This signal causes dd to dump it's progress to stdout.
ps auxww | grep " dd " | grep -v grep | awk '{print $2}' | while read pid; do kill -USR1 $pid; done
Alternately, you may wish to try dcfldd, by Nicholas Harbor. It is based on dd, but adds several additional features, including updating a progress indicator every N blocks. It can also pipe output to multiple things at once, perform hashing on every block. It was originally written for use in computer forensics.
One more method that's perhaps more of a pain to set up, but nicer to look at, and more unixy, is a "Pipe Viewer" named [1]. You use two dd instances instead of one, and pipe the first through pv then through the second. You have to tell pv the size of what you're transferring beforehand, which means you also need to know beforehand, but it makes a progress bar with ETA similar to wget.
[bcrook@bcrook Desktop]$ dd if=/dev/zero bs=1M count=1024 | pv -pterb -s 1024m | dd of=./output.file 152MB 0:00:05 [ 34MB/s] [======> ] 14% ETA 0:00:28

