1
resposta

É possível script para backup periódico?

Olá, pessoal!

É possível criar um Shell Script que execute periodicamente de forma automática para respectivo backup do Swarm, por exemplo de 3 em 3 dias, num determinado horário, como se fosse uma trigger?

1 resposta

Oi Amadeus, tudo bem?

Desculpe a demora em retornar.

Sim, é possível criar um script que execute periodicamente e realize o backup do Swarm de forma automática, como uma trigger.

Para realizar essa tarefa, podemos utilizar algumas ferramentas e comandos do próprio Docker Swarm e do Shell Script. Vou te mostrar um exemplo de como isso pode ser feito de maneira simples e eficiente.

Antes de iniciarmos o script, é importante garantir que você tenha um local para armazenar os backups, como um diretório específico em seu sistema ou um compartilhamento de rede. Vamos supor que você tenha um diretório chamado "backup_swarm" para armazenar os arquivos de backup.

A primeira etapa é criar um script em Shell que faça o backup dos serviços e dos dados do Docker Swarm. Podemos usar o utilitário "docker service" para listar os serviços em execução e depois fazer um dump dos dados dos serviços em um arquivo de backup.

Aqui está um exemplo do script:

#!/bin/bash

# Defina o diretório de backup
BACKUP_DIR="/caminho/para/backup_swarm"

# Defina a data e hora atual para uso no nome do arquivo de backup
DATA_HORA=$(date +"%Y%m%d%H%M%S")

# Verifique se o diretório de backup existe, se não, crie-o
if [ ! -d "$BACKUP_DIR" ]; then
  mkdir -p "$BACKUP_DIR"
fi

# Faça o dump dos dados dos serviços do Swarm em um arquivo de backup
docker service ls | awk 'NR>1 {print $2}' | while read service_name; do
  docker service inspect "$service_name" > "$BACKUP_DIR/${service_name}_${DATA_HORA}.json"
done

# Compacte os arquivos de backup em um único arquivo
tar -czvf "$BACKUP_DIR/swarm_backup_${DATA_HORA}.tar.gz" "$BACKUP_DIR"/*.json

# Limpe os backups antigos, mantendo apenas os últimos três backups
cd "$BACKUP_DIR" && ls -t | grep ".json" | tail -n +4 | xargs rm -f

No exemplo acima, o script criará arquivos de backup em formato JSON para cada serviço em execução no Docker Swarm. Em seguida, os arquivos serão compactados em um arquivo .tar.gz e os backups antigos serão limpos para manter apenas os três backups mais recentes. Você pode ajustar essa quantidade conforme necessário.

Agora, para agendar a execução periódica do script, podemos usar o "crontab" no Linux. O "crontab" é um agendador de tarefas que permite que você execute comandos em horários específicos, de forma periódica.

Para editar o crontab, digite o seguinte comando em seu terminal:

crontab -e

Em seguida, adicione a seguinte linha ao arquivo:

0 0 */3 * * /caminho/para/seu_script.sh

Neste exemplo, o script será executado todos os dias, a cada três horas (0 horas, 0 minutos) para realizar o backup do Docker Swarm. Lembre-se de substituir "/caminho/para/seu_script.sh" pelo caminho completo do seu script Shell.

Agora, sempre que o horário agendado for atingido, o script será executado automaticamente, realizando o backup do Swarm e mantendo os últimos três backups no diretório especificado.

Espero que esta resposta tenha sido útil.

Um abraço e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software