How to clone a disk using Ubuntu Live CD

Boot from CD or USB stick

Open a terminal window
Ctrl + Alt + T

Get a list of drives and partitions - note which is your source HDD. sda, sdb, sdc, sd? etc.
sudo fdisk -l

Unsure which is which? Note the serial number of the HDDs. Use the following to read the serial number of sda
sudo hdparm -i /dev/sda | grep -i serial

Unmount the source or mount the source as Read Only
sudo umount /dev/sda   or   sudo mount -o remount,ro /dev/sda

Copy sda to sdc (Source to destination) ***** Warning do not copy the destination over the source *****
sudo dd if=/dev/sda of=/dev/sdc conv=noerror,sync



Here's what I did to create a disk image of an internal HDD to an external USB HDD

Create the sub-directory called '/backups' on an external drive.
Create a mount point for the external destination drive:
sudo mkdir /mnt/external
Mount the external drive (where drive is sdb)
sudo mount /dev/sdb1 /mnt/external
Create the sub-directory called backups on an external drive.
sudo dd if=/dev/sda of=/mnt/external/backups/filename.img


Or create a compressed disk image on an external drive.
sudo bash
sudo dd if=/dev/sda | gzip -c > /mnt/external/backups/filename.img.gz


To reinstate the image use this (where sda is the new destination disk):
sudo dd if=/mnt/external/backups/filename.img of=/dev/sda
Or to decompress disk image on an external drive.
sudo bash
sudo zcat /mnt/external/backups/filename.img.gz | dd of=/dev/sdx


I seem to get around 50.7MB/s transfer:
256GB HDD took 1.25 hours

That's it. Just wait some hours (you get no progress feedback). You'll simply see the command prompt when it's finished.