You want to keep an image of your disk; here is how to do.

Create the disk image

Boot from a live usb

All partitions of the source hdd should be unmounted

Mount the external hdd

Back up the drive

# dd if=/dev/sdX conv=sync,noerror bs=64K | gzip -c  > /path/to/backup.img.gz

If there is not enough disk space locally, you may send the image through ssh to a remote computer:

# dd if=/dev/sdX conv=sync,noerror bs=64K | gzip -c | ssh user@local dd of=backup.img.gz

Save extra information about the drive geometry necessary in order to interpret the partition table stored within the image. The most important of which is the cylinder size. te disk image

# fdisk -l /dev/sdX > /path/to/

Restore the system

# gunzip -c /path/to/backup.img.gz | dd of=/dev/sdX