This script is an updated version of the one posted by max.hedroom in cpanel.net forums. It supports scp/ftp uploads and remote directories. You can execute this script from you scp host,home computer or your host server. I’d suggest using it from your own machine since it contains plan text passwords!
All You have to do is save the following code to a .php file and add a cron job to execute the php file every tome you would like to have a full backup of your entire web page(emails, DBs, web files) on your own machine.
Enjoy

< ?php // PHP script to allow periodic cPanel backups automatically. // Based on script posted by max.hedroom in cpanel.net forums // This script contains passwords. KEEP ACCESS TO THIS FILE SECURE! // It is updated to support secure ftp connections and remote directories // ********* THE FOLLOWING ITEMS NEED TO BE CONFIGURED ********* // Info required for cPanel access $cpuser = "username"; // Username used to login to CPanel $cppass = "password"; // Password used to login to CPanel $domain = "www.host.com"; // Domain name where CPanel is run $skin = "x"; // Set to cPanel skin you use (script won't work if it doesn't match) // Info required for FTP/SFTP host $ftpuser = "sshusername"; // Username for FTP(SCP) account $ftppass = "sshpassword"; // Password for FTP(SCP) account $ftphost = "sshhost"; // Full hostname or IP address for FTP(SCP) host $ftpmode = "scp"; // FTP mode ("ftp" for active, "passiveftp" for passive, "scp" for secure ftp) $ftpport = "22"; // PORT for FTP(SCP) host $ftprdir = "/path/to/directory"; //Remote Directory on SCP host // Notification information $notifyemail = "mailto@somehost.com"; // Email address to send results // Secure or non-secure mode $secure = 1; // Set to 1 for SSL (requires SSL support), otherwise will use standard HTTP // Set to 1 to have web page result appear in your cron log $debug = 0; // *********** NO CONFIGURATION ITEMS BELOW THIS LINE ********* if ($secure) { $url = "ssl://".$domain; $port = 2083; } else { $url = $domain; $port = 2082; } $socket = fsockopen($url,$port); if (!$socket) { echo "Failed to open socket connection!\n"; exit; } // Encode authentication string $authstr = $cpuser.":".$cppass; $pass = base64_encode($authstr); $params = "dest=$ftpmode&email=$notifyemail&server=$ftphost&user=$ftpuser &pass=$ftppass&port=$ftpport&rdir=$ftprdir&submit=Generate Backup"; // Make POST to cPanel fputs($socket,"POST /frontend/".$skin."/backup/dofullbackup.html?".$params." HTTP/1.0\r\n"); fputs($socket,"Host: $domain\r\n"); fputs($socket,"Authorization: Basic $pass\r\n"); fputs($socket,"Connection: Close\r\n"); fputs($socket,"\r\n"); // Grab response even if we don't do anything with it. while (!feof($socket)) { $response = fgets($socket,4096); if ($debug) echo $response; } fclose($socket); ?>