helio.loureiro.eng.br
  • Home
  • Unix
  • Linux
  • Blog
  • Python
  • Programação
  • Tudo
  • Suécia
  1. You are here:  
  2. Home
  3. Blog

Os artigos mais lidos de 2024

  • linux-br.org num ritmo mais lento
  • Pedal forte de 2023 em dados do Google
  • Minha palestra sobre a história do Unix na IX BSD Day
  • Criando um serviço de relay de DNS-over-HTTPS
  • Linux vs GNU/Linux

Adicionando backup do DB no GoToSo

Details
Written by: Helio Loureiro
Category: Blog
Published: November 29, 2025
Hits: 61
  • fediverso
  • GoToSo
  • systemd
  • gotosocial

Com tudo rodando redondo na minha bolha, bolha minha, resta melhorar a resiliência com backups. Até agora apostei no zfs como saída pra qualquer problema. Mas isso é jogar com a sorte.

Fiz um pequeno e simples script de backup que executa dentro do container, que roda via podman, e faz o pg_dumpall do postgres.

  
#! /usr/bin/env bash
#
#pg_dumpall -U $POSTGRES_USER -f full-backup-$(date "+%Y-%m-%dT%H:%M:%S").sql
#
RETENTION=12

timestamp=$(date "+%Y-%m-%dT%H:%M:%S")
current_dir=$(readlink -f $0)
current_dir=$(dirname $current_dir)
program=$0
program=$(basename $program)
backup_file="full-backup-$timestamp.sql"


echo "Backup on: $timestamp"

podman exec postgres \
        bash -c "pg_dumpall -U \$POSTGRES_USER -f /var/lib/postgresql/backup/$backup_file"

bzip2 $current_dir/postgresql/backup/$backup_file

for filename in $(find $current_dir/postgresql/backup -print | grep bz2 | sort | sed "1,${RETENTION}d")
do
        echo "Removing: $filename"
        rm -f $filename
done
  

E coloquei RETENTION=12 pra manter os últimos 12 backups. Mas por quê 12? Sei lá. Pareceu um número legal.

Eu poderia rodar tudo via crontab, como geralmente faço. Mas nesse caso eu resolvi fazer com timer do systemd. Então primeiro criei o serviço de backup e depois o timer que ativa esse serviço.

  
❯ systemctl --user --force --full edit gotosocial-backup.service
❯ systemctl --user --force --full edit gotosocial-backup.timer
  

Assim são criados o serviço e o timer em modo usuário.

O gotosocial-backup.service:

  
[Unit]
Wants=gotosocial.service
After=gotosocial.service

[Service]
Type=oneshot
ExecStart=/home/helio/gotosocial/run-backup.sh
WorkingDirectory=/home/helio/gotosocial

[Install]
WantedBy=default.target    
  

O gotosocial-backup.timer:

  
[Unit]
Description=GoToSo daily backup

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target    
  

Após serem criados, eles ficam em seu diretório de usuário: /home/helio/.config/systemd/user/gotosocial-backup.{service,timer}

Daí é só habilitar ambos. Ao fazer isso, um backup será gerado pois o systemd vai rodar o serviço ao ser ativado.

  
❯ systemctl enable --now --user gotosocial-backup.service
❯ systemctl enable --now --user gotosocial-backup.timer    
    

Claro que ainda não testei restaurar nenhum desses backups. Vou deixar pra fazer isso quando tiver algum problema de verdade. No momento eles estão salvos em /home/helio/gotosocial/postgresql/backup que é onde apontei como volume dentro compose.yaml do podman.

  
❯ ls -1 /home/helio/gotosocial/postgresql/backup/
 full-backup-2025-11-29T13:17:38.sql.bz2
 full-backup-2025-11-29T13:46:32.sql.bz2
 full-backup-2025-11-29T13:47:14.sql.bz2    
  

E também não testei meu "retention". Daqui 9 dias eu conto se deu certo.

Selfies de 1998 até 2025

Details
Written by: Helio Loureiro
Category: Blog
Published: October 25, 2025
Hits: 393
  • youtube
  • selfies
  • Google Photos

Um pequeno vídeo juntando todas a fotos que o Google Photos mostrou com a busca por "selfie".

  1. Minha bolha, bolha minha
  2. Uma bolha pra chamar de minha
  3. Fim das câimbras no pedal
  4. Bugigangas que comprei no Aliexpress e deram certo

Page 1 of 69

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

Estatísticas

  • Users 2
  • Articles 477
  • Articles View Hits 3467117

Imagem aleatória