PHP script to allow periodic DA backups automatically, optionally to a remote FTP server

CAISC

Verified User
Joined
Dec 2, 2021
Messages
87
Location
SSH Terminal
Hello,

I used this script on cpanel server to generate automatic backup and upload it on a remote FTP server, executed it with cron everyday for account where daily backup is required -

<?php
// ********* THE FOLLOWING ITEMS NEED TO BE CONFIGURED *********
// Information required for cPanel access
$cpuser = "cpanel_username"; // Username used to login to cPanel
$cppass = "cpanel_passwd"; // Password used to login to cPanel
$domain = "cpanel_domainname";// Your main domain name
$skin = "paper_lantern"; // Set to cPanel skin you use (script will not work if it does not match). Most people run the default "x" theme or "x3" theme
// Information required for FTP host
$ftpuser = "ftp_user"; // Username for FTP account
$ftppass = "ftp_user_passswd"; // Password for FTP account, DO NOT use any special character in FTP Password
$ftphost = "ftp_IP"; // IP address of your hosting account
$ftpmode = "passiveftp"; // FTP mode: homedir - Home Directory, ftp - Remote FTP Server, passiveftp - Remote FTP Server (passive mode transfer), scp - Secure Copy (SCP)
$notifyemail = "notification_email"; // Notification information $notifyemail = "[email protected]"; // Email address to send results
$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 *********

$ftpport = "21";
$ftpdir = "path where backup is to be uploaded in ftp account"; // Directory where backups stored (make it in your /home/ directory). Or you can change 'backups' to the name of any other folder created for the backups;
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&port=$ftpport&rdir=$ftpdir&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 do not do anything with it.
while (!feof($socket)) {
$response = fgets($socket,4096); if ($debug) echo $response;
}
fclose($socket);
?>

Can we have some similar solution for Direct Admin also.

Thanks
 
Can we have some similar solution for Direct Admin also.
Feature requests please in the feedback forum.

As for what you are using, do you want this for users? Because this can already be done this way by both admins and resellers.
DA has the build in function to backup to a remote ftp.
 
Back
Top