There are other backup solutions available but I personaly just use tar to backup everything and transfer it onto an external drive. The command I use is
tar cpfz centos_backup_09_09_11.tgz --exclude=/proc --exclude=/sys --exclude=/centos_backup_09_09_11.tgz --exclude=/mnt --exclude=/var/lib/mysql/ddr14 --exclude=lost+found --exclude=/media --exclude=/tmp /
The above line backs up (nearly) everything. /mnt, /media, /proc etc etc should not be backed up. the mysql database is backed up seperately and the backup file itself is marked to not be backed up or an endless loop will be created. The file is created in the root directory.