Automating backups from CPanel

Came across this today and did not see too much on it. Found it pretty helpful though.

Basically if you have a site on a server with CPanel from HostGator, IXWeb hosting etc. But you want to back up your site regularly and your databases because like me you never trust any hosting company. I found a way to automate them.I did not write the code. Just found it online. Basically you need to add this code below to a php file. Upload it to the rot of your directory. Then go into CPanel and set a cron job to run it. Here is a link to the site I found it on. Pretty helpful and it works too. This this is where the post belongs, even though it envolves php, cron jobs, etc. Thanks and let me know if this helps anyone.


<?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"; // 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 = "admin"; // Username for FTP account
$ftppass = "pass"; // 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)
$ftpport = "21"; // Port (default = 21)
$rdir = "/"; // Remote dir (defaut = / )

// Notification information
$notifyemail = "email@email.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&#8230; Bailing out!\
"; exit; }

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

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

// Make POST to cPanel
fputs($socket,"POST /frontend/".$skin."/backup/dofullbackup.html?".$params." HTTP/1.0\\r\
");
fputs($socket,"Host: $domain\\r\
");
fputs($socket,"Authorization: Basic $pass\\r\
");
fputs($socket,"Connection: Close\\r\
");
fputs($socket,"\\r\
");

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

fclose($socket);

?>

That’s actually pretty useful, thank you. I could use this. Nice find :slight_smile:

No problem. I have been using it the past month for weekly back ups on multiple sites. Comes in handy, especially if you have a client or a boss that require you to take your own back ups.