Tutorial: um sistema de backups para seu site – Parte 1



Quem me conhece sabe da minha “neura” em relação à integridade de todas as informações com as quais trabalho e/ou que me são fundamentais em meu dia a dia, tanto comercial quanto pessoal. Na verdade, trata-se de uma “neura” benéfica, creio eu, pois me faz estar sempre conferindo a integridade dos dados e o funcionamento dos diversos sistemas que utilizo para a realização dos backups.

Backups são uma parte importante da rotina de qualquer empresa e/ou de qualquer ambiente onde dados sejam gerados e atualizados. Mesmo se você possuir apenas documentos de texto, planilhas e algumas poucas imagens em seu computador, e mesmo que estes documentos sejam acessados e/ou editados com pouca freqüência, é de se esperar que algum valor eles tenham para você, e sendo assim, por que correr o risco de perdê-los?

É claro que quando falamos em backup estamos falando a respeito da cópia de segurança das informações importantes para um local seguro, cópia esta que deve ser executada de maneira tal que possibilite o posterior restauro e/ou recuperação das informações em caso de um eventual “sinistro”, como por exemplo falhas no hardware, roubos, apagamento acidental, etc. Esta cópia pode também ser o mais simplificada possível, e você pode, de tempos em tempos, por exemplo, simplesmente copiar para um CD ou DVD gravável tudo aquilo que é importante para você.


Creative Commons License photo credit: rossneugeboren

Entretanto, a utilização de ferramentas que automatizem este processo e que ofereçam recursos avançados de recuperação, cópias incrementais, compressão, criptografia, etc, é altamente recomendada, e pode tornar a realização dos backups um processo extremamente simples, e ajudar você a criar uma “rotina de backups” extremamente poderosa e que, sem dúvida, será importante aliada em seu dia a dia.

Para backups de desktops e/ou pequenas redes que utilizem o sistema operacional Windows, uma ferramenta muito interessante é o Comodo Backup, aplicativo gratuito para uso pessoal e comercial, a respeito do qual já falei aqui no Open2Tech. Aliás, aguarde, pois nos próximos dias postarei o prometido tutorial a seu respeito. :)

Sobre backups de sites

Agora, como fazer para assegurar a preservação de seus sites? Como garantir a preservação de seus bancos de dados, arquivos, pastas e tudo aquilo que está presente em sua conta de hospedagem? Como manter também em sua conta de hospedagem, presente em uma máquina que muitas vezes não é administrada por você, uma política de backups sólida e confiável?

Talvez você possua um CMS como o Xoops instalado em seu site ou, de outra maneira, talvez você possua um blog e utilize o Wordpress como gerenciador. De qualquer maneira, seja qual for o tipo de site (ou sites) que você possuir, é extremamente importante possuir também neste quesito uma política de backups que lhe garanta total segurança. Afinal, é o seu trabalho e o seu tempo que estão ali investidos, e se você possui um blog, por exemplo, sabe muito bem do que estou falando. :)

É claro que as empresas de hospedagem geralmente fazem backups de todas as contas presentes em seus servidores, backups estes muitas vezes executados diariamente, semanalmente e mensalmente. Entretanto, tais backups na maioria das vezes visam garantir apenas a segurança da empresa quando da ocorrência de algum problema, e a maioria delas deixa bem claro em seus termos de serviço que o cliente “não deve contar” com tais backups em caso de problemas, e que este deve possuir seus próprios backups atualizados, a fim de utilizá-los quando necessário.

Já vi casos onde a empresa de hospedagem simplesmente não forneceu os backups ao cliente, sabe-se lá por quais motivos, após uma “besteira” que este fez em seu site. Já presenciei casos também onde a empresa até os forneceu, mas estes não estavam atualizados, e o cliente veio a perder muitos dias de trabalho. De qualquer forma, vale ressaltar que a maior parte das empresas de hospedagem realmente não oferece garantias neste sentido, e seus termos de serviço são bem claros neste ponto.

Sendo assim, porque contar com a sorte se você pode (e deve) contar com a segurança total?

O que compõe o backup de um site?

Basicamente, o backup de um site deve conter seus arquivos, pastas e bancos de dados, de forma a permitir sua posterior restauração, quando e se necessário. No caso de sites estáticos, feitos somente em html, por exemplo, basta a cópia de todas as suas pastas, arquivos e imagens. Este é o tipo de site mais fácil de ser restaurado em caso de “sinistros”: com o backup em mãos, basta efetuar novamente o upload de todo o conteúdo, via FTP, e o site estará restaurado.

No caso de websites dinâmicos, que fazem uso de linguagens de programação como por exemplo PHP ou ASP, a coisa é um pouco mais complexa, mas nem por isso difícil. Nestes casos, além de seus arquivos e pastas, é necessário copiar também suas bases de dados.

Neste tutorial irei ajudá-lo a configurar um completo sistema de backup para seu site, o qual copiará tanto os arquivos e pastas existentes no mesmo quanto as bases de dados, caso existam. Vamos montar um completo sistema de backups, que será executado automaticamente todos os dias e lhe enviará e-mails de aviso após cada execução. Este sistema irá guardar cada backup diário por um período de 30 (trinta) dias, e após este prazo começará a sobrepor cada arquivo gerado, ou seja, você sempre terá backups completos dos últimos 30 dias. Muito bom, não? :)

É claro que se você possuir um VPS ou um servidor dedicado, poderá utilizar os recursos de backup existentes no próprio Cpanel/WHM, por exemplo. Este tutorial é voltado para contas de hospedagem em regime compartilhado, que utilizam o painel de controle Cpanel ou que pelo menos utilizem uma estrutura de pastas no FTP que faça uso da pasta “public_html”. Caso sua conta seja diferente, dê uma olhada na seção “Utilizando o script“, mais abaixo.

Sobre os scripts utilizados

Neste tutorial utilizaremos dois excelentes scripts gratuitos disponibilizados no site “Tips and Scripts“. Entrei em contato com o desenvolvedor dos mesmos, responsável pelo website em questão, e ele gentilmente autorizou a utilização dos referidos scripts neste tutorial. Thank you very much, B&T! :)

Os scripts que utilizaremos serão o “Automated Site Backups“, para o backup dos arquivos e pastas componentes do website, e o “Automated MySQL Backups“, para o backup das bases de dados MySQL.

Para fazer uso dos scripts acima, o servidor onde seu site se encontra hospedado deve possuir no mínimo o PHP 4.x. instalado. A empresa de hospedagem deve, também, lhe disponibilizar o recurso de “agendamento de tarefas”, ou “cron jobs“. Se estes recursos não estiverem disponíveis, sugiro então que você comece a pensar sériamente em uma mudança de prestador de serviços. :)

Como sempre, sugiro que você utilize um plano de hospedagem em servidores Linux, em uma empresa que lhe ofereça o painel de controle Cpanel ou pelo menos algum outro similar e/ou tão poderoso e fácil de utilizar quanto.

Instalando e configurando – Criação da pasta destino

Vamos iniciar pela criação da pasta em seu FTP onde serão armazenados os backups das pastas e arquivos, os quais serão gerados diariamente e compactados em um único arquivo com extensão .tar.gz.

Para sua segurança, é imprescindível que esta “pasta destino” não faça parte da pasta webroot (public_html, por exemplo) de sua conta de hospedagem, de forma tal que os backups não sejam acessíveis via navegador, o que representaria uma grande falha e um grande risco aos seus dados, que estariam então disponíveis para download por qualquer pessoa que porventura viesse a descobrir o “caminho”. Ou seja, a pasta destino deve ficar no mesmo nível da sua pasta webroot, e não estar localizada dentro da mesma.

Por exemplo, você não deve criar sua pasta destino “dentro” da pasta “public_html”. Deve, isto sim, criá-la no mesmo nível da public_html, e ao invés de possuir em seu FTP a seguinte estrutura:

/public_html/pastadestino

Deve utilizar a seguinte:

/pastadestino

Isto fará com que seus backups somente sejam acessíveis por você, via FTP ou então através do gerenciador de arquivos do seu painel de controle. Portanto, agora que você já sabe “onde” e “como” deve criar a pasta onde serão armazenados seus backups diários, crie-a com o nome que achar conveniente.

Para criar a pasta, você pode utilizar um cliente FTP qualquer, e minha recomendação aqui vai para o excelente e opensource Filezilla.

Instalando e configurando – Download e configuração do script

Após a criação da pasta destino, efetue o download do script “Automated Site Backups” através deste link. Após o download, renomeie o arquivo “site_backups.txt” baixado para site_backups.php, abra-o com um editor de textos qualquer (recomendo o freeware PSPad) e altere as seguintes linhas:

$emailaddress = “XXXXXX@yourdomain.com”;

Substitua o XXXXXX@yourdomain.com acima pelo seu e-mail.

$path = “/full_server_path_to_file_goes_here”;

Substitua o /full_server_path_to_file_goes_here acima pelo caminho completo para a pasta no servidor onde serão armazenados seus backups. Por exemplo, caso você tenha criado, conforme instruções anteriores, uma pasta destino para seus backups no mesmo nível de sua pasta webroot e com o nome de “pastadestino”, o caminho acima ficará exatamente assim:

/home/seuusuario/pastadestino

No exemplo acima, “seuusuario” deve ser substituído pelo usuário com o qual você faz login em sua conta de hospedagem.

OBS: nas duas linhas acima, lembre-se de substituir somente os dados que estão entre parênteses, e no caminho, não finalize com barras (/). Deixe exatamente conforme demonstrado no exemplo.

Estas são as configurações básicas para que o script funcione. Quando executado, ele enviará uma mensagem de confirmação para o e-mail que você definiu em “$emailaddress”, e armazenará o backup na pasta definida em “$path”. Existem algumas mensagens que constarão no e-mail enviado que podem ser traduzidas, caso você deseje.

Basta efetuar as substituições abaixo, lembrando sempre de que devem ser substituídos somente os trechos que se encontram entre parênteses:

Substitua:

$message = “The website backup has been run.\n\n”;

$message .= “The return code was: ” . $result . “\n\n”;

$message .= “The file path is: ” . $target . “\n\n”;

$message .= “Size of the backup: ” . $size . “\n\n”;

$message .= “Server time of the backup: ” . date(” F d h:ia”) . “\n\n”;

Por:

$message = “O backup das pastas e arquivos foi executado.\n\n”;

$message .= “O código retornado foi: ” . $result . “\n\n”;

$message .= “O caminho para o arquivo backup é: ” . $target . “\n\n”;

$message .= “Tamanho do backup: ” . $size . “\n\n”;

$message .= “Data e hora no servidor ao término do backup: ” . date(” F d h:ia”) . “\n\n”;

É claro que você pode customizar as mensagens conforme bem desejar, seguindo o exemplo acima. Além disso, você pode substituir o “assunto” e o “remetente padrão” do e-mail de aviso.

Para isto, basta substituir:

mail($emailaddress, “Website Backup Message” , $message, “From: Website <>”);

Por:

mail($emailaddress, “Backup dos arquivos e pastas realizado” , $message, “From: Nome do seu site <>”);

Feitas as alterações acima, salve o arquivo site_backups.php.

Instalando e configurando – Upload do script

Em seguida, crie uma pasta em seu FTP, agora dentro de sua pasta public_html (webroot), utilizando um nome bem atípico, como por exemplo “site_bk08tyj_arquivos”. Após a criação desta pasta, efetue o upload do script já configurado (arquivo site_backups.php) para a mesma, e teste o script, acessando através de seu navegador o endereço completo de acesso ao mesmo.

Instalando e configurando – Testando o funcionamento do script

Por exemplo, supondo-se que você tenha criado uma pasta com o nome sugerido acima, você deve acessar o seguinte endereço em seu navegador, substituindo “meudominio.tld” pelo endereço de seu site:

http://www.meudominio.tld/site_bk08tyj_arquivos/site_backups.php

Uma tela em branco será exibida e você deverá receber dentro de poucos segundos o e-mail de confirmação. O backup deverá ter sido gerado após o acesso, na pasta que você escolheu, e você deve confirmar tal geração acessando seu FTP, e verificando o conteúdo da sua “pasta destino”.

Instalando e configurando – Automatizando a execução do script

Tudo dando certo até aqui, vamos agora configurar a cron job para automatizar a execução do script. O acesso ao agendamento de tarefas pode variar conforme o painel de controle utilizado. Entretanto, trata-se de uma opção muito comum, e caso você não consiga encontrá-la, basta entrar em contato com sua empresa de hospedagem.

Alguns painéis de controle oferecem um agendador mais “visual”, onde é possível a escolha das diversas opções através de menus dropdown, por exemplo. Entretanto, o mais comum é a existência de um painel simples e muito mais prático. O agendamento pode ser feito também via SSH, mas este é um procedimento mais complicado, e como nem todas as empresas de hospedagem oferecem acesso SSH para contas de hospedagem em regime compartilhado, não vou citá-lo aqui.

No Cpanel, o acesso ao agendamento de tarefas se dá através do caminho “Advanced ==> Cron jobs” (ou “Avançado ==> Agendador de tarefas”).

Basicamente, o que você precisa é definir a “periodicidade” com que o script vai ser executado, e também o “comando” a ser executado, o qual na verdade é a URL de acesso ao script de backup. Como iremos configurar para que a execução do script seja diária, a configuração é bem simples, e basta configurar sua cron job conforme imagem abaixo:

A tela acima provavelmente é muito semelhante à que você encontrará no painel de controle de sua conta de hospedagem. Basicamente, definimos os seguintes valores, para executar o script todos os dias, às 04:00 horas da manhã:

0 4 * * * GET URL de acesso ao script

Cada um dos 06 (seis) campos corresponde às informações abaixo:

Minute: minuto de execução.

Hour: hora de execução.

Day: dia. O asterisco (*) significa que o script será automaticamente executado todos os dias.

Month: mês. O asterisco (*) significa que o script será automaticamente executado em todos os meses.

Weekday: dia da semana. O asterisco (*) significa que o script será automaticamente executado em todos os dias da semana

Command: o comando que será executado. Neste campo, você deverá digitar o caminho completo para o script, conforme vimos acima. Note que antes da URL você deve utilizar o comando GET, seguido de um espaço.

OBS: caso encontre algum problema neste ponto, entre em contato com sua empresa de hospedagem, a qual poderá lhe auxiliar melhor quanto ao uso do GET ou não.

Para finalizar, salve as alterações.

Sobre o consumo de recursos no servidor

Observe que este script pode causar problemas ao seu servidor, dependendo de seu volume de dados e da carga na máquina, no momento da execução. Por este motivo, é sempre importante configurar sua execução para períodos mais “tranqüilos”, como a madrugada, por exemplo.

No exemplo acima definimos a execução para as 04:00 da madrugada, mas você pode definir qualquer outro horário. Vale lembrar, também, que você deve levar em consideração o “horário definido no servidor“, ou seja, o fuso horário do país onde o servidor se encontra, e então efetuar as correções necessárias.

Utilizando o script

Após todos os procedimentos descritos acima, você terá em seu site um completo e poderoso sistema de backups, que executará backups diários de sua pasta “public_html“, a qual é sua webroot, ou seja, a pasta onde se localizam os arquivos e pastas de seu site, e também de sua pasta “mail“.

Os backups serão gerados na pasta destino que você definiu, sempre compactados (extensão .tar.gz) e com a seguinte “estrutura” de nomes:

backupDAY.tar.gz

Onde DAY será sempre substituído pelo dia do mês (exemplo, backup10.tar.gz), o que significa que cada backup gerado terá um “tempo de vida” de mais ou menos 30 dias, pois, por exemplo, um arquivo de backup gerado hoje (10/06/2008) terá o nome de backup10.tar.gz, e no próximo mês, no mesmo dia (10/07/2008), este será sobreposto pelo novo arquivo gerado. E assim por diante. Além disso, você receberá automaticamente em seu e-mail os avisos ref. à geração dos backups, tão logo estes sejam finalizados.

Vale ressaltar que o script é voltado para contas de hospedagem que utilizam a estrutura de pastas acima demonstrada, ou seja, que “fazem uso” de uma pasta “public_html” como webroot. Caso sua conta de hospedagem faça uso de nomenclaturas e/ou estrutura de pastas diferentes, será necessário alterar a seguinte linha no script, indicando o(s) nome(s) da(s) pasta(s) e o(s) caminho(s):

system(“tar –create –preserve –gzip –file=”.$target.” ~/public_html ~/mail”,$result);

De qualquer forma, se a empresa que lhe fornece os serviços de hospedagem de sites trabalha com o Cpanel, fatalmente você irá possuir esta mesma estrutura, e aí, não haverá a necessidade de nenhuma alteração neste sentido.

Finalizando

Com o script Automated Site Backups e as configurações acima, você terá backups diários e completos dos arquivos e pastas de seu site. Não se esqueça de efetuar download com freqüência de pelo menos um dos arquivos gerados, freqüência esta que deve ser proporcional à freqüência com que você altera arquivos e pastas em seu site.

Apesar de termos configurado para que os backups sejam executados diariamente no servidor, a fim de evitarmos quaisquer sobressaltos futuros, você não precisa efetuar downloads diários dos mesmos. Basta se lembrar de baixar o arquivo mais atualizado sempre antes de alguma alteração em seus arquivos e pastas, ou então semanalmente, sempre no mesmo dia de cada semana. Assim, você não correrá nenhum risco, e terá sempre a possibilidade de “voltar atrás”, caso algum problema ocorrer.

Backups dos bancos de dados MySQL

Caso você possua um website estático, os procedimentos acima são suficientes a você. Entretanto, caso utilize algum CMS ou por algum outro motivo seu site faça uso de bancos de dados MySQL, é necessário assegurar também a correta e total preservação dos mesmos.

Mas isto iremos ver na parte 2 deste tutorial. Aguarde. :)

Informações adicionais

Site do desenvolvedor dos scripts utilizados:

http://tips-scripts.com

Link para download do script para backup de arquivos e pastas:

http://tips-scripts.com/site_backups.txt

Página do script:

http://tips-scripts.com/site_backups

Não existe conteúdo relacionado.

Related posts brought to you by Yet Another Related Posts Plugin.





7 Responses to “Tutorial: um sistema de backups para seu site – Parte 1”

  1. [...] Na primeira parte deste tutorial configuramos um script para a execução de backups automáticos e também diários de todos os arquivos e pastas de seu site. Se você ainda não deu uma conferida na primeira parte do tutorial, sugiro que a leia antes de prosseguir com a leitura desta segunda parte. Para isto, utilize este link. [...]
  2. [...] Tutorial: um sistema de backups para seu site – Parte 1 [...]
  3. [...] Tutorial: um sistema de backups para seu site – Parte 1 [...]
  4. [...] que por tudo aquilo que já escrevi aqui no blog deu pra perceber que sou um neurótico por segurança e pela continuidade da informação. Backups, então, para mim, são primordiais, e estão sempre [...]
  5. Teria como enviar o backup via FTP para uma outra hospedagem? Se sim notifique-me da resposta por email por favor…
  6. Com esse script especificamente não, amigo. :)

Leave a Reply