Martin Paul Eve bio photo

Martin Paul Eve

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

Email Books Twitter Google+ Github Stackoverflow MLA CORE Institutional Repo Hypothes.is ORCID ID   ORCID iD

Email Updates

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.