DEV Community

Alan Patrick
Alan Patrick

Posted on

Crie um sistema automático de backup no Ubuntu com bash e crontab

Existe um monte de coisas legais que podem ser feitas com scripts! Uma coisa que sempre quis fazer é criar um sistema de backup que roda automaticamente em um certo ponto do dia. Agora que descobri como fazer, vou lhes mostar como criar um script com os comandosrsync e crontab.

Passo 0: Tudo começa com um BANG

Crie um script chamado fazBackup.sh, contendo algo assim:

#!/bin/bash

echo Inicializando script de backup.
Enter fullscreen mode Exit fullscreen mode

O comentário #!/bin/bash é uma diretiva que anuncia que interpretador deve ser usado. Neste caso, o interpretador é o bash, mas poderia ser python ou node. Tal diretiva é chamada de shebang.

Precisamos de um script executável, o que significa a necessidade de permissão para execução. Para modificar tal política, usamos o comando chmod. Este comando tem duas formas de adotar novas políticas: números e letras. Aqui será usado a forma de letras e todos os usuários serão capazes de executar o script. (Para saber mais sobre o chmod, aqui) está a documentação em inglês.)

No terminal, escreva:

chmod a+x makebackup.sh
# a means all users
# + means adding a permission (a minus (-) would be removing it).
# x means permission to execute
Enter fullscreen mode Exit fullscreen mode

Passo 1: De onde veio, pra onde foi

Nós usaremos o rsync para copiar os items, porém você poderia usar outras ferramentas, como o commando cp. Para aprender mais sobre o rsync, leia esse tutorial (em inglês).

Dentro do fazBackup.sh, escreva o seguinte:

#!/bin/bash
echo Inicializando script de backup.

rsync [Fontes] /caminho/para/[Destino]/
# Fontes são todos os arquivos e pastas a serem guardados
# Destino é a pasta onde o backup será guardado

echo Backup finalizado. Teminando script.
Enter fullscreen mode Exit fullscreen mode

Lembrete! A pasta de [Destino] não precisa existir previamente, pois rsync cria a pasta no diretório. Tudo o que precisa fazer é colocar o nome desejado, seguindo por uma barra ('/').

Step 2: Tenho um trabalho pra você

Antes de configurar o cronjob, você precisa definir a agenda. Quando que o backup deve ser feito? Use a ferramenta Crontab Guru para decidir quando você quer o trabalho feito — diariamente, semanalmente, mensalment, etc.

Depois, você configura o cronjob, que é bem fácil! Digite crontab -e no terminal, e ele abrirá um crontab com umas informações bacanas — vale a pena dar uma olhada. Dentro desse arquivo, vá ao final, cole a data que você criou no Crontab Guru, e escreva todo o caminho absoluto para o script executável. Algo assim:

# Crontab file
00 10 * * * /caminho/para/fazBackup.sh
Enter fullscreen mode Exit fullscreen mode

Passo 3: E fim

E pronto! Teu script de backup está automatizado.

Uns avisos e considerações

O serviço cron leva um ou dois minutos para atualizar, então se você quiser testar imediatamente, mantenha o timing em mente: coloque a execução do script uns 3 minutos depois de salvar o crontab.

Outra coisa a saber: você poderia agendar o comando tar, em vez de criar um script personalizado. Ficaria algo como:

# Crontab
# at 10:30 am, everyday, do
30 10 * * * tar cvzf /caminho/para/arquivo_de_saida.tar.gz /caminho/para/diretorio_de_entrada/
Enter fullscreen mode Exit fullscreen mode

Conclusion

Espero que este artigo tenha ajudado! O serviço cron é bastante poderoso, assim como é o scripting em bash. Você pode criar todos tipos de tarefas agendadas e tornar sua máquina linux num mordomo pessoal! Se tiver ideas do que mais pode ser feito com cron ou sugestões de melhoria para este artigo, comente abaixo!

Top comments (0)