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: 144.583 ]

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

Aprendendo a melhorar os seus scripts

BackRE - Seu script de backup remoto

Gerar músicas aleatórias com YAD (Modo Gráfico)

cal2svg - brincando com shell script e arquivos vetoriais SVG

Shell script com PHP

  
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 [email protected] 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