Without going into distracting details, I'm attempting to duplicate the contents of the 500GB drive in my MacBook to another 500GB drive. But this is turning out to be an unexpected hassle because the drive contains both the OS X partition and an NTFS partition with Win 7 via Apple's Boot Camp.
With the exception of Clonezilla, the tools I have looked at so far all have some limitation. The Mac tools don't want to deal with the NTFS partition. The Windows tools are totally clueless about either the HFS+ partition and/or the hybrid MBR/GPT Boot Camp partitioning.
Clonezilla looked like it would do what I want but apparently I can't figure out how to use it. After doing what I thought was a sector to sector copy I found that only the NTFS partition had been migrated. The others were apparently empty. (And frankly, I'm not positive Clonezilla migrated the partition table correctly either).
Note: It takes over 2 hours using SATA to read/write all sectors with these drives. So I'm not up for using trial & error to narrow in on the right combination of Clonezilla options to use.
I'm beginning to think that maybe the answer is to boot Linux (probably Ubuntu) and then use some ancient BSD command. Trouble is I don't know what command (or parameters to use) in order to do a sector level copy from one drive to another. As far as I know the drives have the same number of sectors so this should be trivial. Sigh.
dd does work. (Phew!)
I especially appreciated the link in the answer to the corresponding question/exchange on serverfault.com as I never would have thought to look there.
Here are some additional tweaks I used after learning about them from the exchange on serverfault.
Don't use the default transfer size of 512 bytes. In my case I used the form
dd if=/dev/sda of=/dev/sdb bs=8192
since this significantly increased the data transfer rate. (It happened that the size of both my drives was a multiple of 8192. Not sure if that mattered, but it felt safer to do it that way).
There is a way to get some progress status from the
dddisplays its current transfer status when it receives the right signal. I used the method suggested in this serverfault answer. However, I used an interval of 120 seconds, not 10 as I didn't want to get "flooded" with progress info.
It took about 2 hours 20 minutes to completely clone my 500GB drive to another 500GB drive. The final status message from dd was
500107862016 bytes (500 GB) copied, 8353.86 s, 59.9 MB/s
What it lacks in terms of options this process certainly makes up for in simplicity and completeness. :-)