I'm a big fan of using dd to do byte for byte copies of disks and partitions. However, I've noticed the performance of dd in OSX is usually pretty poor. Most people recommend toying around with the 'bs' option (for byte size) to find the optimal copy "chunk" size. I've always had the best results using bs=512k, but even that didn't seem to help when I was recently trying to copy the contents of an old hard disk to a new one. Both disks were connected to the internal SATA controller, but I was only getting a 15 MB/s copy rate.
When running the command, I used the device specifications as enumerated by 'diskutil list' (e.g., dd if=/dev/disk0 of=/dev/disk1 bs=512k). However, after some research, I found that you can place an 'r' in front of the disk# specification to access the "raw" disk and significantly improve performance. So, I tried "dd if=/dev/rdisk0 of=/dev/rdisk1 bs=512k" and I started getting a 90+ MB/s copy rate.