Script para backup automático de contas cPanel e MySQL

Auto Backup Script para cPanelEste é um script simples que deriva do processo de backup do cPanel e permite gerar Full Backups ou backups totais de uma conta cPanel (dados+emails+bases de dados) usando PHP. Este script torna a tarefa de fazer backup do teu site mais simples e consistente permitindo gerar e manter backups da sua conta de uma forma automática.

Nunca se esqueça, “mais vale um backup na mão, do que os seus dados a voar”

.

.

Criar um ficheiro backup.php com o seguinte conteudo:

<?php

// Script PHP que permite fazer backups automáticos periódicos do cPanel para por exemplo um FTP remoto.
// Este script contém PASSWORDS.  Coloque este script num lugar seguro! (coloque na directoria home e não em /www/)

// ********* OS SEGUINTES ITEMS NECESSITAM DE SER CONFIGURADOS *********

// Info required for cPanel access
$cpuser = “nomedouser”; // Nome do user usado para login no cPanel
$cppass = “password”; // Password usada para login no cPanel
$domain = “dominio.com”; // Nome do dominio onde o cPanel corre
$skin = “x3”; // Parametro da skin/tema usado no cPanel. A maioria actualmente usa o x3 ou o x

// Informação necessária para o host de FTP
$ftpuser = “ftpusername”; // Nome do user da conta de FTP do servidor de destino
$ftppass = “ftppassword”; // Password da conta de FTP
$ftphost = “ftp.dominio.com”; // Dominio ou endereço IP do servidor de destino
$ftpmode = “ftp”; // Modo do FTP (“ftp” para modo activo, “passiveftp” para modo passivo)

// Informação de notificação
$notifyemail = “email@dominio.com”; // Endereço de email para enviar os resultados do backup

// Modo seguro ou não seguro
$secure = 0; // Coloque 1 para usar SSL (Necessita de suporte SSL), ou deixe em 0 (zero) para usar o normal http

// Coloque a 1 para adicionar informação adicional de debug no log do cron
$debug = 0;

// *********** NÃO EXISTE NECESSIDADE DE MUDAR MAIS NADA ABAIXO DESTA LINHA *********

if ($secure) {
$url = “ssl://”.$domain;
$port = 2083;
} else {
$url = $domain;
$port = 2082;
}

$socket = fsockopen($url,$port);
if (!$socket) { echo “Falha ao abrir a ligação via socket… Saindo daqui!\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”;

// Fazer o POST ao 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”);

// Apanhar a resposta ao POST mesmo que não se faça nada com ela.
while (!feof($socket)) {
$response = fgets($socket,4096);
if ($debug) echo $response;
}

fclose($socket);

?>

Para configurar a forma como os backups serão efectuados tens de criar um Cron Job no cPanel:

15 2 * * * /usr/local/bin/php /home/youraccount/backup.php

(Corre todos os dias Às 2:15 da manhã)

ou

15 2 * * 1 /usr/local/bin/php /home/youraccount/backup.php

(Corre todos os domingos às 2:15 da manhã)

.

.

Dúvidas e questões é só deixar aqui os teus comentários!

.

Sobre o Autor
Author Image
Carlos Santos é um dos Gestores de Clientes da PTWS. Responsavel por toda a área Técnica e de Sistemas da PTWS Lda., Engenheiro de formação, divide o seu dia na coordenação das actividades das equipas técnicas, no apoio total ao cliente final e à sua Familia.
Pode deixar um comentário, ou responder no seu blog.

4 Comentários a “Script para backup automático de contas cPanel e MySQL”

  1. André diz:

    Olá amigo, eu gostei muito deste script e está funcionando corretamente, más eu reparei uma coisa:

    O backup rodará todos os dias, então o espaço em disco ficará cheio rapidamente, e ficará inviável se eu não ir lá e baixar os arquivos todos pra maquina.

    Queria saber se é possível modificar este script para que ele possa apagar sempre os arquivos de dois dias antes do atual?

    Exemplo:

    1º backup feito dia 16/10
    2º backup feito dia 17/10
    3º backup feito dia 18/10

    Próximo dia 19/10 backups apagados (dias 16 e 17)

    Ai no dia 19/10 teríamos o backup do dia 18/10

    Seria possível fazer este procedimento?

  2. tinomapa diz:

    Ótimo, mas não estou conseguindo realizar o backup. O problema é que não retorna erro algum.

    A sintaxe tem mesmo esta espaço entre …/php /home:?

    15 2 * * 1 /usr/local/bin/php /home/youraccount/backup.php

    De toda forma obrigado.

  3. Arthur diz:

    mt bom o post, vai me ajudar bastanteeeeee..
    tbm tenho a mesma necessidade do romulo,contratei um plano de revenda para hospedar meus sites..
    teria alguma forma de fazer um script para realizar fullbackup de todos os dominios da revenda?
    abraços.

Deixe a sua opinião