feat: adiciona export data-only (*.data.sql.gz) ao backup

Gera um dump adicional com dados puros de todas as tabelas públicas
(--data-only --schema=public) para ambos os modos remote e docker.
Remove --min-age do rclone para garantir upload imediato do arquivo.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Felipe Coutinho
2026-03-21 14:28:35 +00:00
parent 6d891d3b29
commit eef80b4daa
2 changed files with 11 additions and 4 deletions

View File

@@ -9,7 +9,7 @@ e este projeto adere ao [Versionamento Semântico](https://semver.org/lang/pt-BR
### Adicionado ### Adicionado
- Infraestrutura: script `scripts/backup.sh` para backup automático do banco PostgreSQL; configuração de destino (rclone, cron, retenção) feita separadamente - Infraestrutura: script `scripts/backup.sh` para backup automático do banco PostgreSQL; configuração de destino (rclone, cron, retenção) feita separadamente; passa a gerar também `*.data.sql.gz` com dados puros de todas as tabelas públicas (`--data-only --schema=public`)
- Importação de extratos OFX e XLS/XLSX com tela de revisão, detecção automática de categoria por histórico de uso, deduplicação por FITID e acesso direto pela tabela de transações - Importação de extratos OFX e XLS/XLSX com tela de revisão, detecção automática de categoria por histórico de uso, deduplicação por FITID e acesso direto pela tabela de transações
### Alterado ### Alterado

View File

@@ -56,6 +56,7 @@ mkdir -p "$BACKUP_DIR"
DUMP_FILE="$BACKUP_DIR/openmonetis_${TIMESTAMP}.dump" DUMP_FILE="$BACKUP_DIR/openmonetis_${TIMESTAMP}.dump"
SQL_FILE="$BACKUP_DIR/openmonetis_${TIMESTAMP}.sql.gz" SQL_FILE="$BACKUP_DIR/openmonetis_${TIMESTAMP}.sql.gz"
DATA_FILE="$BACKUP_DIR/openmonetis_${TIMESTAMP}.data.sql.gz"
log "Iniciando backup (modo: $DB_MODE)..." log "Iniciando backup (modo: $DB_MODE)..."
@@ -68,6 +69,9 @@ if [[ "$DB_MODE" == "remote" ]]; then
pg_dump --no-owner --no-privileges \ pg_dump --no-owner --no-privileges \
"$REMOTE_DB_URL" | gzip > "$SQL_FILE" "$REMOTE_DB_URL" | gzip > "$SQL_FILE"
pg_dump --data-only --schema=public --no-owner --no-privileges \
"$REMOTE_DB_URL" | gzip > "$DATA_FILE"
elif [[ "$DB_MODE" == "docker" ]]; then elif [[ "$DB_MODE" == "docker" ]]; then
docker exec "$DOCKER_CONTAINER" pg_dump \ docker exec "$DOCKER_CONTAINER" pg_dump \
-U "$DOCKER_DB_USER" -Fc "$DOCKER_DB_NAME" > "$DUMP_FILE" -U "$DOCKER_DB_USER" -Fc "$DOCKER_DB_NAME" > "$DUMP_FILE"
@@ -75,20 +79,23 @@ elif [[ "$DB_MODE" == "docker" ]]; then
docker exec "$DOCKER_CONTAINER" pg_dump \ docker exec "$DOCKER_CONTAINER" pg_dump \
-U "$DOCKER_DB_USER" "$DOCKER_DB_NAME" | gzip > "$SQL_FILE" -U "$DOCKER_DB_USER" "$DOCKER_DB_NAME" | gzip > "$SQL_FILE"
docker exec "$DOCKER_CONTAINER" pg_dump \
--data-only --schema=public \
-U "$DOCKER_DB_USER" "$DOCKER_DB_NAME" | gzip > "$DATA_FILE"
else else
log "ERRO: DB_MODE inválido ('$DB_MODE'). Use 'remote' ou 'docker'." log "ERRO: DB_MODE inválido ('$DB_MODE'). Use 'remote' ou 'docker'."
exit 1 exit 1
fi fi
log "Dump concluído: $(du -sh "$DUMP_FILE" | cut -f1) (.dump) | $(du -sh "$SQL_FILE" | cut -f1) (.sql.gz)" log "Dump concluído: $(du -sh "$DUMP_FILE" | cut -f1) (.dump) | $(du -sh "$SQL_FILE" | cut -f1) (.sql.gz) | $(du -sh "$DATA_FILE" | cut -f1) (.data.sql.gz)"
# --- Upload para Google Drive --- # --- Upload para Google Drive ---
if ! command -v rclone &>/dev/null; then if ! command -v rclone &>/dev/null; then
log "AVISO: rclone não encontrado. Pulando upload." log "AVISO: rclone não encontrado. Pulando upload."
else else
rclone copy "$BACKUP_DIR" "$GDRIVE_REMOTE" \ rclone copy "$BACKUP_DIR" "$GDRIVE_REMOTE" \
--include "openmonetis_*" \ --include "openmonetis_*"
--min-age 1s
log "Upload concluído → $GDRIVE_REMOTE" log "Upload concluído → $GDRIVE_REMOTE"
# Limpeza remota # Limpeza remota