Cómo hacer copias de seguridad cPanel automáticas…
En alguna ocasión, es probable que el servidor pueda estar saturado o que alguna mala configuración no permita llevar a cabo la copia de seguridad que la mayoría de todos estamos acostumbrados a realizar desde nuestra cuenta cPanel.
Es cierto, que cualquier proveedor de hosting realice copias de seguridad cada cierto tiempo, con el propósito de asegurar en alguna medida, la información que tengamos hospedada con ellos, pero se podría dar el caso, que al no ser un servicio incluido y contratado, nuestro proveedor de hosting no se haga responsable de dichas copias y éstas suelen efectuarse cada 15 días aproximadamente, con el propósito de no saturar los servidores.
Copias de Seguridad…
Las copias de seguridad de lo que tengamos alojados con nuestro proveedor de hosting, son muy importantes, especialmente a la hora de tener que mudarnos a otro proveedor. Los pasos para realizar una copia MANUAL desde nuestra cuenta de cPanel son bastante sencillos (si ya estás habituado a realizarlas de esta forma, puedes saltarte los siguientes pasos:
- Acceder a nuestra cuenta cPanel. (http://www.tudominio.com:2082/) e introducir los datos solicitados. (Usuario y Contraseña). Si tu proveedor no emplea SSL para acceder al panel de tu hosting, deberás cambiar tu contraseña asiduamente.
- Accedemos al panel de Archivos y hacemos clic en Respaldos.
- Tras haber hecho clic en “Respaldos” obtendremos la siguiente imagen, donde debemos hacer clic en “Generar Respaldo”, especificando el directorio donde queremos que se guarde la copia y el correo electrónico donde deseamos obtener el informe final de la misma.
Una vez hayamos hecho clic en “Generar Respaldo” solo nos queda esperar el aviso de que todo se haya efectuado adecuadamente en el e-mail que hayamos proporcionado. Evidentemente y en ocasiones, aunque hayamos recibido el e-mail, es posible que el respaldo no se haya generado, por lo que tendremos que volver a empezar desde el principio y esto es lo que vamos a evitarnos, si realizamos copias automáticas. ¿Pero, cómo se generan de forma automática las copias?.
Realizar copia de seguridad mediante Script…
La respuesta es sencilla, vasta incluir un script que proporcionaré más adelante y llevar a cabo una tarea Cron, especificando cada cuanto tiempo queremos que se realicen las copias.
<?php
// Script PHP con el que poder realizar backups periódicos en nuestro server.
// Este script contiene contraseñas, y lo mejor es que guardes el fichero en un lugar seguro. ¡NO LO SUBAS A /www/ o /public_html/!.
// ********* Rellena los siguientes campos *********
// Requeridos para el acceso a cPanel
$cpuser = "NOMBRE DE USUARIO";
$cppass = "CONTRASEÑA";
$domain = "TUDOMINIO.COM";
$skin = "x3"; // Plantilla que usas actualmente, sino coincide no se realizará la copia.
// Notification information
$notifyemail = "TUEMAIL@EJEMPLO.com"; // Esta será la dirección e-mail donde se remitirá el informe de resultados.
// Por defecto, activamos SSL sino disponemos de SSL, se realiza de forma estandar HTTP.
$secure = 1;
// Si quieres una página de resultados y que aparezca en el fichero LOG de Cron, debes indicar un 1 en la siguiente variable.
$debug = 0;
if ($secure) {
$url = "ssl://".$domain; //Comprobamos SSL
$port = 2083;
} else { // sino tenemos certificado, de forma estandar
$url = $domain;
$port = 2082;
}
$socket = fsockopen($url,$port);
if (!$socket) { echo "Imposible realizar la conexión.\n"; exit; }
$authstr = $cpuser.":".$cppass; //pasamos las variables de usuario y contraseña
$pass = base64_encode($authstr);
$params = "dest=homedir&email=$notifyemail&server=&user=&pass=&port=&rdir="; //especificamos el destino
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");
while (!feof($socket)) {
$response = fgets($socket,4096);
if ($debug) echo $response;
}
fclose($socket);
?>
Guarda el contenido del script anterior en un fichero dentro una carpeta segura, /home/ es el lugar idóneo. Puedes asignarle al fichero un nombre que te sea familiar, por ejemplo: backup.php; fullbackup.php; copiacompleta_cpanel.php, etc..
Las tareas de cron nos permiten automatizar algunos comandos o scripts en nuestro sitio. Puedes especificar que un comando o script se ejecute a una hora precisa cada día, semana, etc. Por ejemplo, podrías configurar una tarea de cron para eliminar archivos temporales cada semana a fin de liberar espacio sobre el disco. Pero para nuestro caso y tras haber subido el fichero subirlo al servidor, el comando para el Cron es el siguiente:
30 2 * * 1 /usr/local/bin/php /home/tu-cuenta-cPanel/fullbackup.php
Con esta línea, le decimos al servidor que cada domingo a las 3:30am se ejecute una copia completa de los datos que contenta nuestra cuenta cPanel.
La idea de hacer esto es de Justin Cook, el código lo he modificado para que en lugar de que las copias se realicen a un servidor remoto, se hagan en el nuestro propio.
Muchas gracias, me quitarás muchas preocupaciones :)
Tan solo una pregunta: ¿En «$skin» qué plantilla tengo que poner? ¿La plantilla de qué? :P
Saludos!
Denada Kevin. En dicha variable «$kin» debes indicar el nombre de la plantilla que usas en tu cuenta de cPanel. Lo podrás encontrar al acceder a tu cuenta en la parte superior izquierda del mismo. La mayoría de las cuentas emplean la plantilla x3 para el idioma castellano porque es la que mejor se adapta a todas las opciones. Te dejo una imagen de donde puedes encontrarla. Otra cosa, el comando para ubicarlo en el cron tenía un pequeño error que ha sido modificado, vuelve a copiarlo ;).
Saludos
Gracias, al final lo de la variable «$skin» lo encontré ;) Pero, claro, al intentar hacer funcionar el script me daba problemas; sería por el error…
Saludos.
La línea de comando para el CronJob también tenía un error, ya la he modificado. ;)
Saludos y gracias por comentar
Perdona que te moleste otra vez, Vera.
En el comando Cron,
1. Si, con ayuda del CronJob lo he puesto con el intervalo de tiempo que quiero, ¿después debo sustituir el «30 2 * * 1» por el que yo haya establecido?
2. En «/usr/local/bin/php /home/», ¿lo debo dejar tal y como está?, ¿incluso con el espacio entre el «php» y «/»? (me parece raro ese espacio).
Gracias por tu tiempo!
Tranquilo, no molestas. Respondiendo a tu pregunta, exacto, debes dejar ese espacio entre «php» y «/». Resulta raro, pero es que el comando en sí es «php» y luego se deja el espacio para indicar la ruta.
Efectivamente el intervalo se realiza con CronJob directamente, yo lo puse como ejemplo.
Saludos y si tienes algún otro problema, puedes dejar tu comentario cuando quieras ;).