Hi there everyone,
I have a script that is building a cpanel backup and then storing it remotely on another server via FTP. The point of this script was to automate the backup service, but if I have to log in every week and delete those backups older than one week, I might as well be building the backups myself 🙂
What I'd really like to do is have the script that builds the backup and stores it remotely also check for the existence of .zip files older than one week and unlink them. If that's not possible for some reason, I'd settle for building another script to run locally on the destination server via cron to delete the files older than a week.
The script looks like it's using cPanel's functions completely so unless I don't understand what's going on(not uncommon), the easy solution is going to be another files that works independently of this on the destination server.
Here's the script I'm using:
<?php
// PHP script to allow periodic cPanel backups automatically.
// Permissions on this file should be 600
// Place outside your public_html
// Crontab: 30 3 * * * /usr/local/bin/php /home/username/cpanel_backup.php
// ********* Configuration *********
// Info required for cPanel access
$cpuser = "usern5"; // Username used to login to CPanel
$cppass = "password"; // Password used to login to CPanel
$domain = "yourdomain.com"; // Domain name where CPanel is run
$skin = "x"; // Set to cPanel skin you use (script won't work if it doesn't match)
// Info required for FTP host
$ftpuser = "username"; // Username for FTP account
$ftppass = "password"; // Password for FTP account
$ftphost = "ftp.yourdomain.com"; // Full hostname or IP address for FTP host
$ftpmode = "passiveftp"; // FTP mode ("ftp" for active, "passiveftp" for passive)
// Notification information
$notifyemail = "your@email"; // 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 = 1;
// *********** Don't Touch!! *********
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);
?>