Respaldo automático en cPanel

Dudas sobre Wordpress, Blogger y demás plataformas de contenidos
Responder
Avatar de Usuario
Alejandro
Administrador
Mensajes: 4111
Registrado: 04 May 2009, 18:28
Twitter: @spamloco
Ubicación: Uruguay
Contactar:

Respaldo automático en cPanel

Mensaje por Alejandro »

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
fedelosa
Nivel 5
Mensajes: 362
Registrado: 08 May 2009, 00:11
Twitter: @Fedelosa
Ubicación: Rocha - Uruguay
Contactar:

Re: Respaldo automático en cPanel

Mensaje por fedelosa »

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
elQuique
Moderador
Mensajes: 2227
Registrado: 05 May 2009, 18:43
Twitter: @elQuique
Ubicación: Florida, Uruguay
Contactar:

Re: Respaldo automático en cPanel

Mensaje por elQuique »

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
Alejandro
Administrador
Mensajes: 4111
Registrado: 04 May 2009, 18:28
Twitter: @spamloco
Ubicación: Uruguay
Contactar:

Re: Respaldo automático en cPanel

Mensaje por Alejandro »

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
elQuique
Moderador
Mensajes: 2227
Registrado: 05 May 2009, 18:43
Twitter: @elQuique
Ubicación: Florida, Uruguay
Contactar:

Re: Respaldo automático en cPanel

Mensaje por elQuique »

Le voy a hacer un truncate a la base para que no ocupe un giga jaja
Avatar de Usuario
useritas
Nivel 3
Mensajes: 99
Registrado: 19 Jul 2010, 13:49
Twitter: @
Contactar:

Re: Respaldo automático en cPanel

Mensaje por useritas »

Yo intentaré hacerlo, pero estoy un poco verde en esto
Saludos
miguelcabrera
Nivel 1
Mensajes: 1
Registrado: 08 Ago 2011, 15:25
Twitter: @miguelacabrera

Re: Respaldo automático en cPanel

Mensaje por miguelcabrera »

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
Avatar de Usuario
elQuique
Moderador
Mensajes: 2227
Registrado: 05 May 2009, 18:43
Twitter: @elQuique
Ubicación: Florida, Uruguay
Contactar:

Re: Respaldo automático en cPanel

Mensaje por elQuique »

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 ;)
Responder