Site backup using cron job

fridayshoes

Registered
Feb 24, 2014
4
0
1
cPanel Access Level
Website Owner
I've been trying to set up a cron job to send a complete backup of my website from my host to my personal ftp server and so far I've not succeeded.

Here's the script I've been using (placed outside my public_html folder with 755 permissions):

Code:
< ?php

// PHP script to allow periodic cPanel backups automatically.
// Based on script posted by max.hedroom in cpanel.net forums
// This script contains passwords. KEEP ACCESS TO THIS FILE SECURE!
// It is updated to support secure ftp connections and remote directories

// ********* 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 = "www.mywebsite.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 FTP/SFTP host
$ftpuser = "ftpusername"; // Username for FTP(SCP) account
$ftppass = "ftppassword"; // Password for FTP(SCP) account
$ftphost = "444.444.444.444"; // Full hostname or IP address for FTP(SCP) host
$ftpmode = "scp"; // FTP mode ("ftp" for active, "passiveftp" for passive, "scp" for secure ftp)
$ftpport = "22"; // PORT for FTP(SCP) host
$ftprdir = "/Backup/HostPapa/mywebsite"; //Remote Directory on SCP host

// Notification information
$notifyemail = "[email protected]"; // Email address to send results

// Secure or non-secure mode
$secure = 1; // 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;

// *********** 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!\n"; 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=$ftprdir&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);

?>
Each time the cron job runs I get an email report that contains the entire output of the code from the script file and no backup of my site is present on my FTP.

I've tried using the following cron job commands (all have the same result)

#! /usr/bin/php /scripts/myscriptfile.php

and

/usr/bin/php /scripts/myscriptfile.php

and

php /scripts/myscriptfile.php

If anyone has some advice it would be greatly appreciated.

Thanks
 

cPanelMichael

Administrator
Staff member
Apr 11, 2011
47,880
2,268
463
Hello :)

Have you checked with your hosting provider to verify this type of cron job will work on their server?

Thank you.
 

cPanelMichael

Administrator
Staff member
Apr 11, 2011
47,880
2,268
463
Hi, I wasn't aware there were different types of cron jobs, what specifically should I ask them?
I was referring to the ability to use the PHP binary itself. I recommend reporting the issue to them to determine if a different path to PHP should be used, or to see if they can troubleshoot why it's not functioning as expected.

Thank you.
 

fridayshoes

Registered
Feb 24, 2014
4
0
1
cPanel Access Level
Website Owner
I was referring to the ability to use the PHP binary itself. I recommend reporting the issue to them to determine if a different path to PHP should be used, or to see if they can troubleshoot why it's not functioning as expected.

Thank you.
I asked my host, they said there was no restriction placed on using the php binary and that the path to reach it is /usr/local/bin/php
 

cPanelMichael

Administrator
Staff member
Apr 11, 2011
47,880
2,268
463
Is there a way I can test it, maybe with a different script?
Yes, try using a PHP test script that performs a simple function like checking the date or outputs "Hello World" and see if it works as a cron job.

Thank you.