Nesse post vou compartilhar um script simples e eficiente pra fazer backup no Linux, usando o rsync. No exemplo que vou usar, temos dois diretórios: um de "origem" e um de "destino".
O rsync é na realidade um software de sincronização e isso signfica que todas as alterações que você fizer no diretório "origem" vão refletir no diretório "destino", sejam essas alterações a criação, a alteraração ou a exclusão de arquivos e pastas.
Vamos dar uma olhada no script:
bash#! /bin/bash
SOURCE_DIRECTORY=/home/caton/
[email protected]:/home/someuser/bkp
sudo rsync -Cavz --progress --partial --delete \
--numeric-ids --exclude="*.gvfs" \
$SOURCE_DIRECTORY $DESTINATION_DIRECTORY
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 pesquisar não só para entender, mas também para customizar, de forma que te atenda melhor.
Se te interessar, é possível salvar um log de cada backup:
#! /bin/bash
SOURCE_DIRECTORY=/home/caton/
[email protected]:/home/someuser/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
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.
Para finalizar, uma solução alternativa: dependendo do tipo de backup que você precisa, um simples alias no ~/.bashrc pode ser suficiente:
bashalias runrsync='sudo rsync -Cavz --progress --partial \
--delete --numeric-ids --exclude="*.gvfs"
/home/caton/ [email protected]:/home/someuser/bkp'
Afinal, "Simplicidade é a sofisticação máxima" (Leonardo da Vinci).