FORO SPAMLOCO


Respaldo automático en cPanel


Dudas sobre Wordpress, Blogger y demás plataformas de contenidos
   

Respaldo automático en cPanel

Notapor Alejandro » Dic 2010, 07:20

En El Blog de Luis me encontré un script que permite realizar respaldos completos de cPanel y almacenarlos localmente, simplemente hay que subirlo al servidor y luego programarlo en un Cron Job para que se ejecute, por ejemplo, todas las semanas.

El código es el siguiente, también lo pueden descargar desde el blog de Luis.

Código: Seleccionar todo
[code]<?php

// PHP script to allow periodic cPanel backups automatically, optionally to a remote FTP server.
// This script contains passwords.  KEEP ACCESS TO THIS FILE SECURE! (place it in your home dir, not /www/)

// ********* THE FOLLOWING ITEMS NEED TO BE CONFIGURED *********

// Info required for cPanel access
$cpuser = "username"; // Username used to login to CPanel
$cppass = "password"; // Password used to login to CPanel
$domain = "example.com"; // Domain name where CPanel is run
$skin = "x3"; // Set to cPanel skin you use (script won't work if it doesn't match). Most people run the default x theme

// Notification information
$notifyemail = "you@example.com"; // Email address to send results

// Secure or non-secure mode
$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 *********

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=homedir&email=$notifyemail&server=&user=&pass=&port=&rdir=";

       // 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);
      
?>[/code]



Luego de subirlo al servidor, el comando para el Cron es "/usr/bin/php5 /home/tu-web/nombre-script.php" sin las comillas y utilizando la ruta donde lo suban, en este caso sería la raíz del server.

El script original es de Justin Cook y en lugar de almacenar los respaldos localmente, los envía por FTP. Luis lo modificó para hacer backups locales.

Espero que el dato sirva, lo estuve probando y funciona de lujo :thumbsup:
Avatar de Usuario
Alejandro
Administrador
 
Mensajes: 4106
Registrado: May 2009, 18:28
Ubicación: Uruguay
Twitter: @spamloco



Re: Respaldo automático en cPanel

Notapor fedelosa » Dic 2010, 18:13

Muy bueno! Aca en un famoso blog (?) hay uno para respaldar solo la base de datos SQL y enviarla por mail, tambien con un cron job:

http://fedelosa.com/respalda-automatica ... ql-e-mail/
Avatar de Usuario
fedelosa
Nivel 5
 
Mensajes: 365
Registrado: May 2009, 00:11
Ubicación: Rocha - Uruguay
Twitter: @Fedelosa

Re: Respaldo automático en cPanel

Notapor elQuique » Dic 2010, 00:27

fedelosa escribió:Muy bueno! Aca en un famoso blog (?) hay uno para respaldar solo la base de datos SQL y enviarla por mail, tambien con un cron job:

http://fedelosa.com/respalda-automatica ... ql-e-mail/

No funciono ese script lo probe en mi foro y me rebota la base :P jajaja
Avatar de Usuario
elQuique
Moderador
 
Mensajes: 2230
Registrado: May 2009, 18:43
Ubicación: Florida, Uruguay
Twitter: @elQuique

Re: Respaldo automático en cPanel

Notapor Alejandro » Dic 2010, 03:40

elQuique escribió:No funciono ese script lo probe en mi foro y me rebota la base :P jajaja

Eso te pasa por usar Hotmail :razz:
Avatar de Usuario
Alejandro
Administrador
 
Mensajes: 4106
Registrado: May 2009, 18:28
Ubicación: Uruguay
Twitter: @spamloco

Re: Respaldo automático en cPanel

Notapor elQuique » Dic 2010, 10:16

Le voy a hacer un truncate a la base para que no ocupe un giga jaja
Avatar de Usuario
elQuique
Moderador
 
Mensajes: 2230
Registrado: May 2009, 18:43
Ubicación: Florida, Uruguay
Twitter: @elQuique

Re: Respaldo automático en cPanel

Notapor useritas » Dic 2010, 14:43

Yo intentaré hacerlo, pero estoy un poco verde en esto
Saludos
Avatar de Usuario
useritas
Nivel 2
 
Mensajes: 98
Registrado: Jul 2010, 13:49
Twitter: @

Re: Respaldo automático en cPanel

Notapor miguelcabrera » Ago 2011, 14:29

Hola
Necesito hacer el respaldo del Cpanel y enviarlo a otro ftp ¿Como lo puedo hacer?
Probe el script de Justin Cook pero no me funciono, despues probe el de luis y si me funciono
pero necesito enviar el respaldo a otro ftp
si alguien me puede ayudar se lo agradeceria mucho
Saludos
miguelcabrera
Nivel 1
 
Mensajes: 1
Registrado: Ago 2011, 15:25
Twitter: @miguelacabrera

Re: Respaldo automático en cPanel

Notapor elQuique » Ago 2011, 18:43

CPanel tiene una opción que hace respaldo y lo envía aun FTP, si tienes eso en tu panel puedes crear un pequeño script que mediante CURL haga los procesos que haría el usuario de forma automática.

O sea es obvio que no vas a hacerlo manual y dar clic, entonces con PHP te creas un pequeño script que clickea y rellena esos formularios gracias a la magia de CURL y logras hacer entonces el backup y enviarlo por FTP, ahí vamos con un script que hice un tiempo atrás:

Código: Seleccionar todo
$username = 'usuariocpaneldelsitio';
$password = 'passworddelcpanel';

$data = array(
         'dest' => 'ftp',
         'email' => 'emaila@notificaralfinalizar.listo',
         'server' => 'www.dominiodelftp.com',
         'user' => 'usuariodelftpdestino',
         'pass' => 'passworddelftpdestino',
         'port' => '21',
         'rdir' => '/');
            
curl_setopt($ch, CURLOPT_URL, 'http://www.dominiodetucpanelsitioarespaldar.com:2082/frontend/x3/backup/dofullbackup.html');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLAUTH_NTLM, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

$data = curl_exec($ch);


Y vamos a la explicación línea a línea:

Usuario y contraseña del sitio FTP que vamos a respaldar:
Código: Seleccionar todo
$username = 'usuariocpaneldelsitio';
$password = 'passworddelcpanel';


Este array contiene los datos que se llenarían en el formulario de respaldo, que se envían por POST mediante CURL como si tu rellenaras el formulario manualmente:
Código: Seleccionar todo
$data = array(
         'dest' => 'ftp',
         'email' => 'emaila@notificaralfinalizar.listo',
         'server' => 'www.dominiodelftp.com',
         'user' => 'usuariodelftpdestino',
         'pass' => 'passworddelftpdestino',
         'port' => '21',
         'rdir' => '/');

dest - le indicas 'ftp' la otra opción es descargar pero tu no quiere eso lo quieres eso, lo quieres a un FTP
email - cuando termina el respaldo te envía un email notificando que todo salio bien a esta casilla
server - servidor FTP donde vas a respaldar
user - usuario del FTP a donde vas a respaldar, destino
pass - contraseña del FTP donde vas a respaldar
port - puerto FTP del servidor, usualmente 21
rdir - carpeta destino del respaldo, si quieres organizarte creas una por cada respaldo, si no / raíz nomas

URL donde el formulario de respaldo envía o sea la que realiza el respaldo en sí:
Código: Seleccionar todo
curl_setopt($ch, CURLOPT_URL, 'http://www.dominiodetucpanelsitioarespaldar.com:2082/frontend/x3/backup/dofullbackup.html');

según el template de tu cpanel o la versión puede cambiar levemente tu ajustala.

Acá indicas el tipo de autenticación que debe ser CURLAUTH_BASIC y el $username y $password definido más arriba con el usuario y contraseña de ingreso a tu cpanel:
Código: Seleccionar todo
curl_setopt($ch, CURLAUTH_NTLM, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");


Acá le indica que los datos se envían por POST y cuales son los datos o sea el array $data:
Código: Seleccionar todo
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);


Ejecutas la orden CURL por tanto se desarrolla todo:
Código: Seleccionar todo
$data = curl_exec($ch);


Listo ;)
Avatar de Usuario
elQuique
Moderador
 
Mensajes: 2230
Registrado: May 2009, 18:43
Ubicación: Florida, Uruguay
Twitter: @elQuique