Portal Home > Knowledgebase > Backup & Restore > How can I setup cPanel to perform automatic backups for me?


How can I setup cPanel to perform automatic backups for me?




In order to carry out such a task, you need to follow the instructions below:

NOTE: YOU CHOOSE TO USE/RUN THIS AT YOUR OWN RISK. WE WILL NOT BE HELD RESPONSIBLE FOR ANY DATA LOSS BY RUNNING THIS SCRIPT

Create a file with the following coding inside it. THIS MUST BE A .PHP FILE

The coding required for the file is:

< ?php

// Remove the space between the < and the ?PHP on the PHP tag above as the KB system needs it to be able to show the code

// 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 = "yourcpanelusername"; // Username used to login to CPanel
$cppass = "yourcpanelpassword"; // Password used to login to CPanel
$domain = "yourdomain.com.au"; // 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 = "yourftpserver.com.au"; // Full hostname or IP address for FTP host
$ftppath = "/ftp/path/here/"; // Full path on FTP server to save files to
$ftpmode = "ftp"; // FTP mode ("ftp" for active, "passiveftp" for passive)

// Notification information
$notifyemail = "notificationemail@yourdomain.com.au"; // 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&rdir=$ftppath&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);
echo "Completed";
?>

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 * * * php -q /home/youraccount/fullbackup.php

(Runs every night at 2:15 a.m.)

or

15 2 * * 1 php -q /home/youraccount/fullbackup.php

(Runs every Sunday night at 2:15 a.m.)


As this is only an advised technical solution, it is not guaranteed by us that it will work and technical support on the script is very limited.

Please feel free to contact us if you have any questions.



Was this answer helpful?

Add to Favourites Add to Favourites    Print this Article Print this Article

Also Read