Martin Paul Eve bio photo

Martin Paul Eve

Professor of Literature, Technology and Publishing at Birkbeck, University of London

Email Books Twitter Github Stackoverflow MLA CORE Institutional Repo Hypothes.is ORCID ID  ORCID iD Wikipedia Pictures for Re-Use

Originally from V-Nessa's site, I thought I would share the PHP script that I have now modified to include Secure Copy (SCP) support.

<?php



// PHP script to allow periodic cPanel backups automatically.

// Permissions on this file should be 600 

// Place outside your public_html 

// Crontab:  30 3 * * * /usr/local/bin/php /home/username/cpanel_backup.php



// ********* Configuration *********



// Info required for cPanel access

$cpuser = "username"; // Username used to login to CPanel

$cppass = "password"; // Password used to login to CPanel

$domain = "domain.com"; // Domain name where CPanel is run

$skin = "x3"; // Set to cPanel skin you use (script won't work if it doesn't match)



// Info required for SCP host

$ftpuser = "scpuser"; // Username for SCP account

$ftppass = "scppass"; // Password for SCP account

$ftphost = "scp.host.com"; // Full hostname or IP address for SCP host

$port = "22";

$ftpmode = "scp"; // FTP mode ("ftp" for active, "passiveftp" for passive, "scp" for scp)
$rdir = "/home/yourusername/Backup/";
 // make sure this folder exists on the destination host


// Notification information

$notifyemail = "you@youremail.com"; // Email address to send results



// Secure or non-secure mode

$secure = 0; // 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 = 1;



// *********** Don't Touch!! *********



if ($secure) {

   $url = "ssl://".$domain;

   $port = 2083;

} else {

   $url = $domain;

   $port = 2082;

}



$socket = fsockopen($url,$port);

if (!$socket) { echo "Failed to open socket connection... Bailing out!\n"; exit; }



// Encode authentication string

$authstr = $cpuser.":".$cppass;

$pass = base64_encode($authstr);



$params = "dest=$ftpmode&rdir=$rdir&email=$notifyemail&server=$ftphost&port=$port&user=$ftpuser&pass=$ftppass&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);



?>

If you need help with usage, it's exactly the same as in V_Nessa's original post, so read there, but now supports copying to a remote host over SSH.