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.

[ Hits: 152.180 ]

Por: Eduardo Alexandre Gula em 31/01/2008


Explicando o arquivo de backup



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 " Sincronização 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 destino. 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 " Sincronização 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.

Página anterior     Próxima página

Páginas do artigo
   1. Porque usar o rsync
   2. Configurando o arquivo de backup
   3. Explicando o arquivo de backup
   4. Programando o cron para realizar o backup
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Shell script com PHP

Apresentando o Yad - "zenity melhorado"

getopts: criando scripts Bash com parâmetros e argumentos personalizáveis

Piano Gripe 3 - Caracteres de controle

cal2svg - brincando com shell script e arquivos vetoriais SVG

  
Comentários
[1] Comentário enviado por renata_paiva em 31/01/2008 - 10:54h

Ola,

Gostei muito do artigo, mais queria saber se é possivel e como fazer no seu script.

Estava vendo nessa linha

rsync -Cravzp /pasta-de-origem/ /pasta-de-destino/

Que ele manda de uma pasta para outra.

Tenho uma maquina 192.168.0.1 que é onde todo mundo salva seus documentos e tenho outra maquina 192.168.0.2 que gostaria de mandar os backup pelo rsync

Como posso fazer isso ?

Sei que no ip final .1 rodaria o rsync , mais teria como mandar por scp os backups ?

Obrigada

[2] Comentário enviado por dockism em 31/01/2008 - 16:25h

Renata,

Dá uma olhada aqui, dai você pode encrementar essa linha

http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=338&pagina=3

[3] Comentário enviado por fdmarp em 21/03/2009 - 13:07h

Legal. Valeu mesmo

[4] Comentário enviado por tx@ig.com.br em 08/07/2009 - 00:19h

Olá tudo bem,criei essas regras para facilitar um pouco a configuração do cron ...

Espero poder ajudar ....



1) Criar arquivo de backup no diretório desejado;
2) Dar permissão total ao arquivo;
3) Instalar o rsync pelo console (#aptitude install rsync);
4) Editar o arquivo "cron" pelo console (#vim /etc/crontab) e adicionar a linha "*/3 * * * * root /usr/local/bin/backup";
5) Salve o arquivo "Esc,:x";
6) Abrir o console e digite "#gedit /usr/local/bin/nome-do-arquivo (No meu caso coloquei nesse diretório o arquivo de nome backup)
7) Dentro desse arquivo que você criou digite as seguintes linhas:

#!/bin/bash

INICIO=`date +%d/%m/%Y-%H:%M:%S`
LOG=/diretório-do-arquivo-de-backup/`date +%Y-%m-%d`_nome-do-arquivo-de-backup (No meu caso ficou assim "/usr/local/bin/backup")

echo " " >> $LOG
echo " " >> $LOG
echo "|-----------------------------------------------" >> $LOG
echo " Sincronização iniciada em $INICIO" >> $LOG


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


echo " Sincronização Finalizada em $FINAL" >> $LOG
echo "|-----------------------------------------------" >> $LOG
echo " " >> $LOG
echo " " >> $LOG

8) Dar permissão de executável o arquivo de backup:

chmod +x nome-do-arquivo (No meu caso backup)

9) Abrir o console e reiniciar o serviço;

"# /etc/init.d/cron restart"

Obs: Eu criei esse script para que seja executado o backup a cada 3 minutos .

Obrigado e Espero ter ajudado....


E viva o Linux :)

[5] Comentário enviado por rwinfogames em 17/03/2010 - 15:41h

Gente, gostaria de saber como faço para instalar o rsync no linux fedora 8.
baixei o rsync-3.0.7.tar.gz, extrai ele , mas nao consigo instalar ou compilar com esses comandos informados acima.
Alguem pode me ajudar?
t+

[6] Comentário enviado por jacksonsantana em 01/08/2014 - 11:02h

bom dia, preciso de uma sugestao!

Uso Rsync para backup, até então tudo ok.
Na otimização de um script... precisei do --include, mas nao funcionou no modo backup.

Backup do diretorio compartilhado, para outro local...
onde aqui nesse comando, ele sincroniza tudo, e salva em pastas separadas as modificacoes em arquivos.

rsync --backup --backup=$DATA -a /dados_cliente /dados_bkpeados

eu uso o seguinte comando para sincronizar o diretorio com o hd externo.
rsync -a /dados_bkpeados /hd_montado.


Agora, preciso usar o include...que é um arquivo, com varios diretorios diferentes.
nao quero e nem tem a necessidade de clonar linhas do mesmo comando.
ou seja, melhorando o primeiro comando acima, mas que nao é somente um diretorio de dados, e sim, vários.

tentei assim:

rsync --backup --backup=$DATA --include --include-from=/root/diretorios.list /dados_bkpeados

teria alguma sugestao amigo?

[7] Comentário enviado por Terkoyz em 23/02/2016 - 11:34h

Artigo muito bem feito, foi de grande ajuda para um novato como eu, parabéns pelo artigo


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts