Using the script provided below you will be able to make automatic full cPanel backups of your account.
This backup script includes SSL support. This is not necessary if you run the script on the server for which you are generating the backup; but the SSL support could be important if you are running the script somewhere else to connect to your cPanel hosting account.
<?php $cpaneluser = 'user'; // cPanel username $cpaneluserpass = 'pass'; // cPanel password $theme = 'paper_lantern'; // Must match current selected cPanel theme ('paper_lantern' in the majority of cases, 'x3' is possible as well) $ftp = true; // If it's false the backup will be stored in user's home directory, otherwise it will be uploaded via FTP to some custom location $ftpserver = 'serverX.web-hosting.com'; // Must be localhost for current server or custom hostname for remote FTP upload $ftpusername = 'user'; // cPanel/SFTP username. Should be the same as cPanel username for local upload or custom for remote upload $ftppassword = 'pass'; // cPanel/SFTP password. Should be the same as cPanel password for local upload or custom for remote upload $ftpport = '21098'; // SFTP port. Should be 21 in most cases. $ftpdirectory = '/home/user/backups'; // Directory on FTP server to store backups. MUST EXIST BEFORE BACKUP OR BACKUP PROCESS WILL FAIL // Do not edit below this line $domain = 'localhost'; $secure = true; $auth = base64_encode($cpaneluser . ":" . $cpaneluserpass); if ($secure) { $url = "ssl://" . $domain; $port = 2083; } else { $url = $domain; $port = 2082; } $socket = fsockopen('localhost', 2082); if (!$socket) { exit("Failed to open socket connection."); } if ($ftp) { $params = "dest=scp&server=$ftpserver&user=$ftpusername&pass=$ftppassword&port=$ftpport&rdir=$ftpdirectory&submit=Generate Backup"; } else { $params = "submit=Generate Backup"; } fputs($socket, "POST /frontend/" . $theme . "/backup/dofullbackup.html?" . $params . " HTTP/1.0\r\n"); fputs($socket, "Host: $domain\r\n"); fputs($socket, "Authorization: Basic $auth\r\n"); fputs($socket, "Connection: Close\r\n"); fputs($socket, "\r\n"); while (!feof($socket)) { $response = fgets($socket, 4096); // echo $response; //uncomment this line for debugging } fclose($socket); ?>
To schedule the script to run regularly, save it as fullbackup.php in your home directory and add a new cron job with the following syntax:
00 2 * * 1 /usr/local/bin/php /home/youraccount/fullbackup.php
(Runs every Sunday night at 2:00 a.m.)
NOTE 1: In order to exclude the backups folder from automatic backup generation (if your account is a couple GBs big, disk space usage will increase drastically, as every new backup will contain all the former ones), look for the cpbackup-exclude.conf file in the home directory, add the folder name and use an asterisk * after the directory if you want to exclude all the files from a directory, or add the path to the file you wish to exclude from backups then and save the changes:
NOTE 2: If your account is hosted on a shared server, make sure that your script usage is optimized in order not to overload the server.
NOTE 3: We do not provide code debugging services. This script is provided as a matter of courtesy for your convenience only.
That's it!
Need any help? Contact us via Helpdesk