Pequenas soluções usando linha de comandos - parte III (script de backup)

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:

#! /bin/bash
SOURCE_DIRECTORY=/home/caton/
DESTINATION_DIRECTORY=caton@10.10.10.2:/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/
DESTINATION_DIRECTORY=caton@10.10.10.2:/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/ caton@10.10.10.2:/home/someuser/bkp'

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

Deixe um comentário