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):
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
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);
?>
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