Instead of storing whole dd images, even if they’re just backups of small partitions, you can save space and bandwidth by piping dd into a compression utility like gzip. You can then unzip the files straight into sha1sum to get a checksum of what you just backed up.
dd and netcat on one end, netcat and dd on the other. so simple, it’s like magic.
You’re not going to write out all zeros, but the end case will be the disk is full of nothing but zeros. (or partition, like /dev/sdb3, which is what I used this for). The basic idea here is you read a disk, one arbitrary chunk at a time, compute the checksum for each chunk and only write out zeros to the chunks that are not all zeros already. But it all comes down to how expensive is it to write vs read.
The problem is, hexdump will give you 16 ascii characters surrounded by pipes and then a newline before printing the next 16. You can’t search for long strings that way…
You can use the pv utility in conjunction with double buffering dd with pipes to get a nice little progress bar. Y ou can customize this to see elapsed time, and transfer rate.
Your first Linux command on a dual boot system should be: dd if=/dev/zero of=`fdisk -l | grep -m1 NTFS | awk ‘{print $1}’`