Fazendo backup do seu site/forum no Dropbox

Essa dica é para quem deseja fazer um backup do seu site ou forum no Dropbox, vou mostrar como através de alguns arquivos e uma configuração no Cpanel você pode agendar backups diários compactados tanto dos arquivos do seu site, quanto do banco de dados.

Então siga os passoas abaixo, qualquer dúvida, não deixe de comentar ao final do post.




Crie uma conta no Dropbox

Se você chegou até aqui por meio do Google já deve saber que o Dropbox é um serviço de backup online com capacidade para histórico de versões. No plano gratuito você tem disponível 2GB que pode ser aumentado até 8GB convidando outras pessoas para o serviço.

Então para começar, você pode criar uma conta que vai armazenar seus backups, clique aqui para se cadastrar.

Se você já possui uma conta pessoal no Dropbox não recomendo utiliza-la para esse processo, pois seu usuário e senha será usado mais tarde no arquivo de configuração que acessará o Dropbox para backup.


Baixe o Dropbox Uploader

O desenvolvedor Jaka Jankar criou um script em php que faz toda a mágica de enviar os arquivos para o Dropbox, nesse arquivo você colocará seu usuário e senha do dropbox, e indicará quais arquivos deverão ser copiados.

Clique aqui e faça download do arquivo, na mesma página tem um exemplo de uso do script.

Nesse ponto se você quiser, já poderia usar o script para enviar qualquer arquivo do seu host de hospedagem direito para o Dropbox, bastanto indicar usuário, senha e o arquivo a ser enviado, mas vou mostrar como você pode deixar tudo agendado.

Depois de ter feito o download do arquivo, o DropboxUploader.php, vamos criar um novo arquivo, como indicado no site do desenvolvedor, no caso estou chamando o arquivo de Dropbox_up.php, dentro desse arquivo coloque o seguinte:



require 'DropboxUploader.php';
$uploader = new DropboxUploader('usuarioDropbox@site.com', 'minhasenha');
$uploader->upload("backups/BACKUP_FORUM".date("Y-m-d").".sql.gz");
$uploader->upload("backups/BACKUP_FORUM".date("Y-m-d").".tar.gz");
?>


Salve o arquivo.

Como pode ver acima, temos o require que importa o arquivo principal que é responsável por conectar ao conta do dropbox.

Na outra linha na função DropboxUploader temos onde será colocado o usuário e senha criados.

E na ultima linha é onde você indica o arquivo que será feito backup.

No caso eu tenho duas linhas, uma que envia os arquivos do fórum e outra que envia o arquivo do banco de dados, já compactados.

Como deve ter percebido também temos um coringa ai que é:

date("Y-m-d")
No meu caso, faço backup toda madrugada a cada dia, então, por exemplo, o nome do arquivo será BACKUP_FORUM2011-08-07.tar.gz e o outro arquivo será BACKUP_FORUM2011-08-07.sql.gz, veja que conforme o dia, o valor da data irá mudando, assim na sua pasta do Dropbox você terá backup de diversos dias diferentes.

Agora que preparamos o script de upload, vamos agendar o backup e é nesse passo que os arquivos de backup do seu site/fórum, são criados e serão esses arquivos que serão enviados pelo script para sua pasta no dropbox.


Agendado o backup no Cpanel


Agora, acesse o Cpanel do seu provedor, procure onde você pode agendar tarefas pelo Cron, como mostra a imagem abaixo:





Então, vamos adicionar algumas tarefas, para todas elas, defina em que hora e minuto elas deverão ser feitas, nos outros campos onde se definiem dias e mês, você pode colocar um asterisco, assim a tarefa será realizada todos os dias naquele mesmo horário e minuto ou você pode realizar o backup a cada dois dias mas atenção, primeiro devemos fazer o backup local no servidor de hospedagem tanto do banco de dados, quanto dos arquivos de configuração, nisso você deve ver quanto tempo demora para o backup ser feito e só depois, 1 hora depois por exemplo, o script do Dropbox deve ser iniciado. Vamos detalhar, primeiro temos a seguinte tarefa no cron:

mysqldump -u userbanco -senhabanco bd_forum | gzip > backups/BACKUP_FORUM`date +"\%Y-\%m-\%d"`.sql.gz
Com esse comando eu estou fazendo um backup do banco de dados Mysql, dúvidas sobre o comando, por favor utilize o Google. Então o mysqldump fará o backup, dependendo do seu host e do tamanho do seu banco de dados isso pode demorar segundos ou mesmo alguns minutos, então mensure bem isso. Em seguida, no mesmo comando o arquivo .sql gerado é compactado com o gzip e enviado para uma pasta chamada backups, que eu crei na raiz e veja só, muita atenção aqui, o nome do arquivo que será gerado segue o mesmo padrão daquele no script anterior, lembra-se? Devem seguir o mesmo padrão para que o script possa fazer o backup, veja que no nome do arquivo temos o coringa que irá pegar a data atual e concatenar no nome do arquivo.

Agora no comando abaixo temos o que será responsável por backup da sua pasta de arquivos:

tar -zcf backups/BACKUP_FORUM`date +"\%Y-\%m-\%d"`.tar.gz public_html/forum
Veja, com o comando tar, eu concateno e compacto a pasta que está no public_html, no caso a pasta forum, essa tarefa de compactar, no meu caso, demora mais que fazer backup do banco de dados. O arquivo será gerado na pasta backups, a mesma do banco de dados.
Você pode agendar esses dois comandos no mesmo horário. Mas não faça o backup dos arquivos antes do banco de dados, algumas ações feitas nos arquivos, dependendo do seu sistema, ficam gravadas no banco de dados, então para não faltar algo, faça primeiro do BD e depois dos arquivos ou os dois ao mesmo tempo.
Veja na imagem abaixo, estou agendando a tarefa de backup dos arquivos para todos os dias 3 horas da manhã:


Agora vamos agendar aquele nosso script, que fará o backup para a conta no Dropbox:




Veja o detalhe, o seu host deve deixa você utilizar o comando php daquela forma, então temos:

php Dropbox_up.php

Veja que agendei para cerca de 1 hora depois do backup local dos outros arquivos, pois o processo poderia demorar bastante e também agendei o script para ser executado todos os dias. Então dependendo do espaço que você tem no Dropbox e o tamanho dos seus arquivos, o espaço pode se esgotar rápido e talvez valha a pena pagar pelo plano deles de 50GB e ter a disposição backup de diversos dias ou mesmo backup de diversos sites seus.

Finalizando

Agora, acesse seu host e mande para lá os arquivos que farão backup para o Dropbox, no meu caso, mais por preguiça, deixei os dois arquivos na raiz, não deixe na pasta public_html, assim também não tem perigo de no caso de uma invasão, os arquivos ficarem expostos com usuário e senha.
Lembre-se que o backup local dos arquivos no servidor estão agendados para acontecer na pasta backups, crie essa pasta também.
Se você agendou o backup diário, lembre-se de verificar todos os dias quantos arquivos tem no servidor na pasta backup, e para garantir espaço, você pode ir deletando eles manualmente, já que eles já estão na sua pasta do dropbox.
Ou mesmo você pode agendar uma tarefa de remoção de arquivos antigos no cron.
O que me motivou a procurar por uma soluação assim foi ver que existe uma extensão para wordpress que faz backup e envia para o Dropbox, mas meu problema é que administro um forum em phpbb também e não vi nada para ele assim e a vantagem é que você vai poder mandar qualquer arquivo para o dropbox dessa maneira.

Dúvidas, sugestões, erros, por favor não deixem de comentar.

Comentários

Postagens mais visitadas deste blog

Transformando o Linksys WRT54G2 V1 em bridge, repetidor

Recuperando partições deletadas

How to install YUM and other rpm packages on VIOs and AIX manually