De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Eduardo Alexandre Gula
Data de Publicação: 14 de Janeiro de 2008
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 de minha escolha,
podendo ser um outro disco no servidor.
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 demasiadamente demorado.
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.
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.
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:
Diretiva | Significado |
---|---|
-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
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.
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.
rsync
em http://samba.anu.edu.au/rsync/ .
E-mails para <eduardo (a) alexsite com br> em caso de dúvidas ou comentários serão bem-vindos!
Eduardo Alexandre Gula possui Pós graduação em MBA em Tecnologia da Informação e graduação em Ciência da Computação além de inúmeros cursos. Atualmente é proprietário da ALEXSITE Internet & Informática. Tem experiência na área de Ciência da Computação, com ênfase em desenvolvimento de sistemas via web e apoia e participa do movimento open-source.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários