X

dump

webdev 2-06-08

Backups automáticos no cPanel

Backups automáticos no cPanel

Backups é daquelas coisas às quais só se dá o justo valor depois do desastre e em geral a lição é dura. Qualquer pessoa responsável pela manutenção de um site ou qualquer outro projecto sério o sabe mas em geral o problema é mesmo manter a disciplina.

Não será novidade a funcionalidade do cPanel para fazer backup de parte ou da totalidade de uma conta. É também bom lembrar que a maior parte das SPs (em ambientes partilhados) não permite o restauro da totalidade de uma conta, tendo isso de passar pelo suporte técnico (não havendo impeditivo para backups parciais). Se isto já traz alguma segurança, o esquecimento pode ser fatal.

É então que surge uma solução simples para automatizar este processo, com base nas tarefas agendadas CRON.

O primeiro passo será criar e configurar o seguinte ficheiro numa pasta que não seja a public_html (com permissões 600):

<?php
// script PHP para backup periódico e automático de uma conta cPanel.
// Este ficheiro deve ter permissões 600
// Colocar fora do public_html
// Crontab:  30 3 * * * /usr/local/bin/php /home/username/cpanel_backup.php
// ********* Configuração *********
// Informação para acesso ao cPanel
$cpuser = "usern5"; // Username do CPanel
$cppass = "password"; // Password do CPanel
$domain = "oteudominio.com"; // Domínio onde corre o cPanel
$skin = "x"; // Skin do cPanel (ex: x, x2, x3)
// Informação para acesso a servidor FTP
// Se o servidor de destino for o mesmo estes valores devem ficar vazios
$ftpuser = "username"; // Username para FTP
$ftppass = "password"; // Password para FTP
$ftphost = "ftp.oteudominio.com"; // Domínio ou IP do servidor FTP
$ftpmode = "passiveftp"; // modo FTP ("ftp" para activo, "passiveftp" para passivo)
// Informação para notificação
$notifyemail = "tu@oteudominio.com"; // Email para receber os resultados
// Modo seguro ou não
$secure = 0; //  1 para SSL
// 1 para mais resultados no 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&amp;email=$notifyemail&amp;server=$ftphost&amp;user=$ftpuser&amp;pass=$ftppass&amp;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);
?>
pagina 1 pagina 2




Reagir

Subscrever sem comentar.