cPanel Users Automatic Backup

I stumbled accross this automatic backup script for cPanel users who have access to Cron Jobs.

I use it to back up my phpVMS site. Hope somebody finds it useful!

Add the file ‘fullbackup.php’ in your home directory (/home/(username)/). Configure your cPanel login and theme details, and then your ftp details and email notification details (it can be a remote ftp server!):

<?php

// PHP script to allow periodic cPanel backups automatically, optionally to a remote FTP server.
// This script contains passwords.  KEEP ACCESS TO THIS FILE SECURE! (place it in your home dir, not /www/)

// *********THE FOLLOWING ITEMS NEED TO BE CONFIGURED*********

// Info required for cPanel access
$cpuser = ""; // Username used to login to CPanel
$cppass = ""; // Password used to login to CPanel
$domain = ""; // Domain name where CPanel is run
$skin = ""; // Set to cPanel skin you use (script won't work if it doesn't match). Most people run the default x theme

// Info required for FTP host
$ftpuser = ""; // Username for FTP account
$ftppass = ""; // Password for FTP account
$ftphost = "l"; // Full hostname or IP address for FTP host
$ftpmode = "ftp"; // FTP mode ("ftp" for active, "passiveftp" for passive)

// Notification information
$notifyemail = ""; // 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 = 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... Bailing out!n"; exit; }

// Encode authentication string
$authstr = $cpuser.":".$cppass;
$pass = base64_encode($authstr);

$params = "dest=$ftpmode&email=$notifyemail&server=$ftphost&user=$ftpuser&pass=$ftppass&submit=Generate Backup";

// Make POST to cPanel
fputs($socket,"POST /frontend/".$skin."/backup/dofullbackup.html?".$params." HTTP/1.0rn");
fputs($socket,"Host: $domainrn");
fputs($socket,"Authorization: Basic $passrn");
fputs($socket,"Connection: Closern");
fputs($socket,"rn");

// Grab response even if we don't do anything with it.
while (!feof($socket)) {
  $response = fgets($socket,4096);
  if ($debug) echo $response;
}

fclose($socket);

?>

To find your skin, it will be in the URL like this:

http://www.mysite.com:2082/frontend/ x3 /index.html

It’s usually X but it could be something else.

Secondly, this is the cron job command. Customise it to run at any time you wish:

/usr/local/bin/php /home/<YOUR USERNAME>/fullbackup.php

Of course, replace <YOUR USERNAME> with your cPanel Username.

Any problems and I’ll help you out.