I would keep it simple and clone it. Boot a live system from USB (easiest is Ubuntu from a USB thumb drive, I find), then dump your hard disk to a different partition (or external hard drive etc.), e.g.
dd if=/dev/sda1 bs=64M of=/mnt/my_mounted_backup_drive/backup-sda1
where you need to replace /dev/sda1 with your root (/) partition. Do the same with other partitions (like the one for /boot, /boot/efi, /home) where applicable.
If you need to save space, you could do
dd if=/dev/sda1 bs=64M | gzip --fast | dd bs=32M of=/mnt/my_mounted_backup_drive/backup-sda1.gz
or, more complicated, much slower but saving a few more bytes,
mkdir -p /mnt/linux
mount -o ro /dev/sda1 /mnt/linux
cd /mnt/linux
tar cvJf /mnt/my_mounted_backup_drive/linux-backup.tar.xz .??* *
You can then restore the other way around, e.g.
mkdir -p /mnt/linux
mount /dev/sda1 /mnt/linux
cd /mnt/linux
tar xvJf /mnt/my_mounted_backup_drive/linux-backup.tar.xz
or
dd /mnt/my_mounted_backup_drive/backup-sda1.gz bs=32M | gzip --decompress | dd bs=64M of=/dev/sda1
(careful where you are writing your data, this deletes everything on /dev/sda1, so get it right the first time :-)