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.
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:
#! /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:
alias runrsync='sudo rsync -Cavz --progress --partial \
--delete --numeric-ids --exclude="*.gvfs"
/home/caton/ [email protected]:/home/someuser/bkp'