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!
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.