DEV Community

Alan Patrick
Alan Patrick

Posted on

1

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!

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay