Skip to content

Instantly share code, notes, and snippets.

@csmarwal
Forked from anja98/fullbackup.php
Created January 22, 2021 03:37
Show Gist options
  • Select an option

  • Save csmarwal/370366ab6ac29afea1d6adf235a6ef05 to your computer and use it in GitHub Desktop.

Select an option

Save csmarwal/370366ab6ac29afea1d6adf235a6ef05 to your computer and use it in GitHub Desktop.

Revisions

  1. @anja98 anja98 revised this gist Jul 21, 2014. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions fullbackup.php
    Original file line number Diff line number Diff line change
    @@ -8,6 +8,8 @@
    To schedule the script to run regularly, add this script to run as a cron job in your cpanel.
    You need create 'backups' folder in your home directory ( or any other folder that you would like to store your backups in ).
    Reference: https://www.namecheap.com/support/knowledgebase/article.aspx/915
    */

    // ********* THE FOLLOWING ITEMS NEED TO BE CONFIGURED *********
  2. @anja98 anja98 created this gist Jul 21, 2014.
    69 changes: 69 additions & 0 deletions fullbackup.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,69 @@
    <?php
    /*
    PHP script to allow periodic cPanel backups automatically, optionally to a remote FTP server.
    This script contains passwords. It is important to keep access to this file secure (we would ask you to place it in your
    home directory, not public_html)
    To schedule the script to run regularly, add this script to run as a cron job in your cpanel.
    You need create 'backups' folder in your home directory ( or any other folder that you would like to store your backups in ).
    */

    // ********* THE FOLLOWING ITEMS NEED TO BE CONFIGURED *********
    // Information required for cPanel access

    $cpuser = "username"; // Username used to login to cPanel
    $cppass = 'password'; // Password used to login to cPanel. NB! you could face some issues with the "$#&/" chars in the password, so if script does not work, please try to change the password.
    $domain = "example.com";// Your main domain name

    $skin = "x"; // 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 = "ftpusername"; // Username for FTP account
    $ftppass = 'ftppassword'; // Password for FTP account NB! you could face some issues with the "$#&/" chars in the password, so if script does not work, please try to change the password.
    $ftphost = "ip_address"; // 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)

    // Notification information $notifyemail = "[email protected]"; // 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 = 0;

    $ftpport = "21";
    $ftpdir = "/backups/"; // 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;
    // *********** 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&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);

    ?>