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)