Visite também: Br-Linux ·  VivaOLinux ·  LinuxSecurity ·  Dicas-L ·  NoticiasLinux ·  SoftwareLivre.org ·  [mais]

Como programar backup com rsync e cron de maneira rápida e simples

Nesse tutorial, você aprenderá uma forma rápida e simples de como criar um backup automatizado através do rsync, acionado pelo cron.
Utilizo em meu servidor esse pequeno script de backup. Ele realiza o backup em um momento pré-programado pelo cron em uma pasta que desejar, podendo ser um outro disco no servidor.

Porque usar o rsync:
Simplesmente porque ele é um software específico para realização de cópias, funciona de maneira a acelerar as transferências ao copiar as diferenças entre 2 arquivos, ao invés de copiar o arquivo inteiro todas as vezes. Isso mesmo. Ele consegue identificar quais arquivos foram alterados e o administrador pode optar por copiar somente os arquivos novos ou modificados e não necessariamente todos os arquivos, o que tornaria o processo de backup demorado de maneira desnecessária.
Esse recurso pode apresentar grande vantagem, principalmente para backups diários de grande quantidade de arquivos.
Outro grande benefício é que o rsync preserva as informações sobre permissões e propriedade dos arquivos e diretórios, inclusive de links simbólicos.

Instalando o rsync:
O primeiro passo é instalar o rsync, caso você ainda não o possua.
Se você utiliza Debian, logado como root digite:
# apt-get install rsync

Se você utiliza Ubuntu, digite:
$ sudo apt-get install rsync

Somente para confirmar se seu rsync está funcionando normalmente, digite na linha de comando:
$ rsync

Caso apareçam informações de help do rsync é porque foi instalado corretamente.

Configurando o arquivo de backup:

No arquivo abaixo, será utilizado o seguinte parâmetro com o rsync para que ele realize a cópia: -Cravzp.
Dessa forma, o rsync está sendo acionado para:

-C: auto-ignorar arquivos idênticos
-r: copier de forma recursive, ou seja todos os diretórios e subdiretórios no caminho especificado
-a: indica que estarão sendo copiados arquivos
-v: modo verboso, mais informações da cópia
-z: comprime os arquivos durante a cópia
-p: indicador de progresso de cópia

#!/bin/bash

INICIO=`date +%d/%m/%Y-%H:%M:%S`
LOG=/var/log/`date +%Y-%m-%d`_nome-do-arquivo-de-log.txt

echo " " >> $LOG
echo " " >> $LOG
echo "|-----------------------------------------------"  >> $LOG
echo "  Sincronizacao iniciada em $INICIO" >> $LOG

sudo rsync -Cravzp /pasta-de-origem/ /pasta-de-destino/ >> $LOG
FINAL=`date +%d/%m/%Y-%H%:M:%S`

echo "  Sincronizacao Finalizada em $FINAL" >> $LOG
echo "|-----------------------------------------------"  >> $LOG
echo " " >> $LOG
echo " " >> $LOG

Explicando o arquivo de backup:

Na primeira linha há um aviso ao interpretador de comandos que deve ser utilizado o bash:

#!/bin/bash

Armazena o momento de início na variável INICIO, no formato dd/mm/yyyy-hh:mm:ss:

INICIO=`date +%d/%m/%Y-%H:%M:%S`

Armazena na variável LOG qual o arquivo que deve ser gravado um registro do backup, no formato yyyy-mm-dd_nome-do-arquivo.txt:

LOG=/var/log/`date +%Y-%m-%d`_nome-do-arquivo-de-log.txt

Mantendo esse arquivo, pode ser muito útil para que possa verificar se os backups têm sido realizados corretamente.
Cria o início do registro de log no arquivo, gravando um cabeçalho no qual insere a data e hora do início do backup:

echo " " >> $LOG
echo " " >> $LOG
echo "|--------------------------------------------" >> LOG
echo " Sincronizacao iniciada em $INICIO" >> $LOG

Essa é a linha que realiza o backup de fato. Ela invoca o comando rsync e fornece os parâmetros de quais arquivos copiar e para qual destivo. A cada arquivo copiado, uma linha será inserida no arquivo de log. Dessa forma, o administrador pode saber quais arquivos foram copiados no backup de determinado dia.

sudo rsync -Cravzp /pasta-de-origem/ /pasta-de-destino/ >> $LOG

Armazena o momento de término do backup na variável FINAL, no formato

FINAL=`date +%d/%m/%Y-%H%:M:%S`

Finaliza o arquivo de backup com um rodapé no qual insere a data e hora do término do backup:

echo " Sincronizacao Finalizada em $FINAL" >> $LOG
echo "|--------------------------------------------" >> $LOG
echo " " >> $LOG
echo " " >> $LOG

Observações: Caso deseje alterar os parâmetros do rsync para a cópia, consulte o manual do rsync com o comando man rsync.
Sugiro criar uma pasta em /var/log com o nome rsync e gravar todos os logs do rsync nessa pasta.

Programando o cron para realizar o backup:
O cron é um serviço do Linux que é carregado durante o processo de boot do sistema. Ele funciona como um agendador de tarefas e permite agendar a execução de comandos e processos de maneira repetitiva ou para uma data específica.
O daemon (uma espécie de programa que executa tarefas em segundo plano) do cron executa os comandos nas datas e horários especificados. A cada minuto, o daemon verifica se há alguma tarefa a ser executada.
Todas as ações do cron são realizadas por base em registros em uma espécie de tabela conhecida como crontab.
Para os familiarizados com o Linux, não há segredos para a configuração do cron via linha de comando.

Para os que possuem menos domínio do Linux, sugiro fortemente que instale o Webmin. Trata-se de uma ferramenta de administração através de interface web que facilita muito a vida do administrador.
Para instalar o Webmin, faça seu download a partir de http://www.webmin.com/download.html .
Aos usuários de Debian e Ubuntu, baixe o pacote .deb .
Se seu Linux for um Debian, digite como root:

# dpkg –i webmin_versao-do-webmin-copiado.deb

Se seu Linux for um Ubuntu, digite:

$ sudo dpkg –i webmin_versao-do-webmin-copiado.deb

Caso apresente dependências de outros pacotes, instale os pacotes que solicitar.
Já com o Webmin instalado, acesso pelo navegador o endereço https://192.168.1.11:10000 e digite seu usuário do sistema Linux.
Dentro do Webmin, acesse o menu Sistema > Tarefas agendadas (CRON).
Não remova os agendamentos já existentes! Pode danificar seu Linux.
Apenas clique na opção “Criar nova tarefa agendada”.
Na próxima janela, uma sugestão de agendamento seria:
Executar tarefa agendada como: root
Ativo: sim
Descrição: descreva aqui sua tarefa para que você se lembre
Executar quando: Horários e datas selecionados abaixo
Minutos: Selecionados 0
Hora: Selecionados 17
Dias: Todos
Meses: Todos
Dias da semana: Todos
Executar em qualquer data: sim

Seu backup agendado está pronto!
Agora seu backup está agendado.
Verifique no primeiro backup se os arquivos foram copiados corretamente para o destino e confirme o registro de log do arquivo. Caso esteja tudo ok, nos momentos programados seu backup irá funcionar automaticamente, sem intervenção manual.

Mais informações:
Mais informações sobre o rsync em http://samba.anu.edu.au/rsync/ .
Mais informações sobre o Webmin em http://www.webmin.com/ .
Mais informações sobre o CRON em http://pt.wikipedia.org/wiki/Crontab ou http://www.guiadohardware.net/dicas/agendando-tarefas-rotinas-cron.html .

E-mails para eduardo@alexsite.com.br em caso de dúvidas ou comentários serão bem-vindos!


Tags: , ,

Leia Também


Envie um Trackback do seu site:

Comentarios

Comentarios estao desabilitados neste artigo.

  1. Por alleinstark | janeiro 12, 2008, 15:26

    Ótima este tutorial de tão importante ferramenta de uso crucial como é o caso de backups.
    Mesmo com alguns anos de experiência em administração, pode-se vez ou outra enfrentar dificuldades.
    Parabéns a todos que neste espírito de desenvolvimento e comunidade auxiliam a todos nós, dedicando o precioso tempo para que todos nós possamos estar sempre mais integrados no sistema e plataforma GNU/Linux.
    Stark

  2. Por Tchello | janeiro 13, 2008, 00:51

    Muito importante esta dica do webmin, para os iniciantes.