Pequenas soluções usando linha de comandos – III (Script de backup)

Pequenas soluções usando linha de comandos – III (Script de backup)

Nesse post vou compartilhar um script simples e eficiente pra fazer backup no Linux, usando o Rsync.

Atenção! Se você estiver fazendo backup numa partição FAT, recomendo este post do Leandro Lazarte.

Teremos dois diretórios: um diretório “fonte” contendo os arquivos os quais devem ser feito backup e outro “destino” que é onde a cópia será realizada. O Rsync é um software mais de sincronização do que de backup propriamente dito. Isso signfica que as alterações que você fizer no diretório “fonte” – ao rodar o Rsync – se refletirá no diretório “destino”, incluindo criação, alteraração ou exclusão de arquivos e pastas.

O script é este:

#! /bin/bash
#---------------------------------------
# Script que realiza backup automatizado
# by Lucas Catón
#---------------------------------------

SOURCE_DIRECTORY=/home/caton/
DESTINATION_DIRECTORY=caton@10.10.10.2:/home/anyuser/bkp

sudo rsync -Cavz --progress --partial --delete --numeric-ids --exclude="*.gvfs" $SOURCE_DIRECTORY $DESTINATION_DIRECTORY

clear
echo Backup realizado com sucesso.
echo

Explicando: as variáveis SOURCE_DIRECTORY e DESTINATION_DIRECTORY são apenas pra deixar o script mais organizado e fácil pra alterar os diretórios. Note que o segundo diretório que eu coloquei é um diretório remoto, acessado via protocolo ssh. A sintaxe é simples: usuário@ip:diretório.

Sobre os parametros utilizados (progress, partial, etc), vale a pena dar uma olhada no man pra entender e customizar, de forma que te atenda melhor. Por exemplo: comigo, às vezes dá pau em arquivos .gvfs, que ficam no /home, então eu mandei ignorá-los.

Se for interessante pra você, é possível salvar um log de cada backup:

#! /bin/bash
#---------------------------------------
# Script que realiza backup automatizado
# by Lucas Catón
#---------------------------------------

SOURCE_DIRECTORY=/home/caton/
DESTINATION_DIRECTORY=caton@10.10.10.2:/home/anyuser/bkp

LOG_FILE=~/logs/bkp_"$(date "+%F")".log
touch $LOG_FILE

sudo rsync -Cavz --progress --partial --delete --numeric-ids --exclude="*.gvfs" $SOURCE_DIRECTORY $DESTINATION_DIRECTORY > $LOG_FILE

clear
echo Backup realizado com sucesso.
echo O log encontra-se em: $LOG_FILE
echo

Outra coisa interessante é colocar esse script no cron. Assim, de tempos em tempos ele será executado automaticamente.

Pra finalizar, uma solução alternativa. Dependendo do tipo de backup, em vez de criar um script, um simples alias no ~/.bashrc já resolve:

alias runrsync='sudo rsync -Cavz --progress --partial --delete --numeric-ids --exclude="*.gvfs" /home/caton/ caton@10.10.10.2:/home/anyuser/bkp'

Afinal, “Simplicidade é a sofisticação máxima” (Leonardo da Vinci)

  • Pingback: Pequenas soluções usando linha de comandos – III (Script de backup) « Blog Vale | Blogosfera do Vale do Paraíba()

  • Thiago Alessio – X-Johnny s/ maionese

    Parabéns Lucão! vc já tinha me falado desse tal de Rsync vou ver se o FreeBSD tem essa fita ai tb ;D

    Aproveitando o tema, esses dias minha mãe comprou um dell q veio com o windows 7, e eu reparei q eles botaram uma merda de “backup do windows” lá pra copiar o time machine do mac … M$ sempre tentando correr atrás do prejú kkkkk

    Abraço por traiz e valeu pela dica zeeh ;D

  • rflredblue

    Muito bom. Parabéns e obrigado.

Comments are closed.