I use rsync. On the next line I will paste the shell script I use to do this. In my case I have then set up a cron job to automatically back up my complete home directory and all other users in it every night at 9 PM Then also on Mon night at 10 PM I then make a weekly backup. I will post both scripts and u will notice the different folders they go into. This operation takes approximately 7 minutes to do. Size of my home directory at the moment is around 84 Gbs. Note using rsync, the first copy takes awhile because it has to back up all files, subsequent backups then take the seven minutes or so, this is because the script is set up to mirror the differences from the hard drive. Also a daily log is made. On my distro (PCLinux OS o9) Rsync was one of the programs installed with base installation. Google Rsync and you will see what the options I have set up with this script are doing. The idea behind the weekly and daily bkups is that I then have 7 days to see if I have a problem with my system and roll back to a known good version if required..
Daily bkup
#!/bin/bash
#Script to back up my home directory minus movies and music dirs daily
rsync --archive --exclude=You\ Tube\ Videos/* --exclude=Movies/* --delete --log-file=/media/SAMSUNG/daily/jrp-log /home/jrp /media/SAMSUNG/daily/
Weekly backup
#!/bin/bash
#Script to back up my home directory minus movies and music dirs Weekly
rsync --archive --exclude=You\ Tube\ Videos/* --delete --log-file=/media/SAMSUNG/weekly/home-log /home /media/SAMSUNG/weekly/
Note: You will have to input your own directorys and backup destination. My destination is on a external 2Tb Samsung drive with a file called weekly and daily. To restore is simply a matter of reinstalling base distribution and then copy required files from the backup drive. Note if you have more experience than I do, you probably will save a bit of time backing up relevant files from root.
Hope this helps, Cheers
.