Call us 7am to midnight (GMT)
02037453658

cPanel Automated Backup Script!

  (by )

Recently a few people asked us if there was a way they can automatically backup their site to another location. I’ve done some searching and found a script which will back up your website and FTP it to a location you choose.

From here down is the PHP code for the script:

// 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”; // Username used to login to CPanel
$cppass = “password”; // Password used to login to CPanel
$domain = “example.com”; // Domain name where CPanel is run
$skin = “x3”; // 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 = “ftpusername”; // Username for FTP account
$ftppass = “ftppassword”; // Password for FTP account
$ftphost = “ftp.example.com”; // Full hostname or IP address for FTP host
$ftpmode = “ftp”; // FTP mode (“ftp” for active, “passiveftp” for passive)

// Notification information
$notifyemail = “you@example.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 = 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);

?>

End of PHP Code!

To schedule the script to run regularly, save it as fullbackup.php in your top directory (not /public_html, which would be less secure), and enter a new cron job like the following:
15 2 * * * /usr/local/bin/php /home/youraccount/fullbackup.php
(Runs every night at 2:15 a.m.)

or
15 2 * * 0 /usr/local/bin/php /home/youraccount/fullbackup.php
(Runs every Sunday night at 2:15 a.m.)

4 Comments

  1. On January 25, 2010 at 2:19 am

    Ian Wilcox said:

    Thanks for sharing 🙂

    Been looking everywhere for this will start using with my evocpanel 🙂

  2. On March 18, 2009 at 10:59 am

    Richard said:

    I would just like to point out that the second example you mention would not run at 2:15am every Sunday. It would run at 2:15am every Monday. Cron used 0 – 7 for day of the week of which 0 & 7 are for Sunday. 1 is for Monday.

    • On March 23, 2009 at 8:53 pm

      Tim M. said:

      Cheers Richard, all fixed 🙂

  3. On March 14, 2009 at 12:33 pm

    Jack said:

    It’s the first time I comment here and I must say that you give us genuine, and quality information for other bloggers! Good job.
    p.s. You have a very good template for your blog. Where did you find it?