The Community Forums

Interact with an entire community of cPanel & WHM users!
  1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

auto backup

Discussion in 'General Discussion' started by stevieg_83, Dec 2, 2009.

  1. stevieg_83

    stevieg_83 Registered

    Joined:
    Dec 2, 2009
    Messages:
    2
    Likes Received:
    0
    Trophy Points:
    1
    Hi there,
    I wonder if anyone can help me.

    I'm trying to setup a Cron job via cPanel to create a backup of my home directory and then ftp an archive to my internal ftp server.

    This script works brilliantly in meeting more than my requirement:

    Code:
    <?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 = "user"; // Username used to login to CPanel
    $cppass = "password"; // Password used to login to CPanel
    $domain = "domain.co.uk"; // 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 = "user"; // Username for FTP account
    $ftppass = "password"; // Password for FTP account
    $ftphost = "127.0.0.1"; // Full hostname or IP address for FTP host
    $ftpmode = "passiveftp"; // FTP mode ("ftp" for active, "passiveftp" for passive)
    
    // Notification information
    $notifyemail = "email@email.com"; // 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);
    
    ?> 
    This script backs up everything on my domain which is just under 1Gb. What I'd like to do is backup only my home directory.

    I imagine that the line:
    Code:
    fputs($socket,"POST /frontend/".$skin."/backup/dofullbackup.html?".$params." HTTP/1.0\r\n");
    is the key, how would I tell it not to do a full backup but only the home directory?

    Thanks in advance,
    Steven
     
  2. jrianto

    jrianto Active Member

    Joined:
    Jun 9, 2008
    Messages:
    44
    Likes Received:
    0
    Trophy Points:
    6
    Hi Steven,
    You have to modify the script and pickup the home directory backup file instead of the full backup wizard file.

    fputs($socket,"POST /frontend/".$skin."/getbackup/backup-domain.com-MM-DD-YYYY.tar.gz HTTP/1.0\r\n");

    Change the domain.com and date to the the actual one. I haven't tried that, but I think it should work.
     
Loading...

Share This Page