davet
New member
I have found this info to be very helpful and it has saved us many times in the past from extended downtime for our sites.
This is how we backup our important sites daily to a remote FTP location.
Create a file in your /home/username/ directory named backup.php with the code below. Then setup a cron to run the file daily. We actually run it 4 times daily.
You don't need your own expensive FTP server either. I use an XP Pro machine with Filezilla server installed to it for our remote FTP server. The XP machine is located right next to my main workstation so I can burn copies to DVD if need be. I use port forwarding within my Verizon FIOS router to point the FTP port to the XP machine.
I can sleep at night now knowing I have a local copy of our most important data.
Don't rely on your hosting provider for backups. If you read most hosting providers' policies they're not responsible for them anyways.
Do the smart thing and start keeping backups of your site to a remote location, on your local computer or one you have physical access to.
This is how we backup our important sites daily to a remote FTP location.
Create a file in your /home/username/ directory named backup.php with the code below. Then setup a cron to run the file daily. We actually run it 4 times daily.
You don't need your own expensive FTP server either. I use an XP Pro machine with Filezilla server installed to it for our remote FTP server. The XP machine is located right next to my main workstation so I can burn copies to DVD if need be. I use port forwarding within my Verizon FIOS router to point the FTP port to the XP machine.
I can sleep at night now knowing I have a local copy of our most important data.
Don't rely on your hosting provider for backups. If you read most hosting providers' policies they're not responsible for them anyways.
Do the smart thing and start keeping backups of your site to a remote location, on your local computer or one you have physical access to.
Code:
<?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 = "cpanel-username"; // Username used to login to CPanel
$cppass = "cpanel-password"; // Password used to login to CPanel
$domain = "yourdomain.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 = "remote-ftp-username"; // Username for FTP account
$ftppass = "remote-ftp-password"; // Password for FTP account
$ftphost = "remote-ftp-hostname"; // Full hostname or IP address for FTP host
$ftpmode = "ftp"; // FTP mode ("ftp" for active, "passiveftp" for passive)
// Notification information
$notifyemail = "user@domain.com"; // 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 = 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.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);
?>