diff --git a/CHANGELOG.md b/CHANGELOG.md index e5f98d3..1469e38 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ e este projeto adere ao [Versionamento Semântico](https://semver.org/lang/pt-BR ### 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 ### Alterado diff --git a/scripts/backup.sh b/scripts/backup.sh index 097cfb0..9ea3403 100755 --- a/scripts/backup.sh +++ b/scripts/backup.sh @@ -56,6 +56,7 @@ mkdir -p "$BACKUP_DIR" DUMP_FILE="$BACKUP_DIR/openmonetis_${TIMESTAMP}.dump" SQL_FILE="$BACKUP_DIR/openmonetis_${TIMESTAMP}.sql.gz" +DATA_FILE="$BACKUP_DIR/openmonetis_${TIMESTAMP}.data.sql.gz" log "Iniciando backup (modo: $DB_MODE)..." @@ -68,6 +69,9 @@ if [[ "$DB_MODE" == "remote" ]]; then pg_dump --no-owner --no-privileges \ "$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 docker exec "$DOCKER_CONTAINER" pg_dump \ -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 \ -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 log "ERRO: DB_MODE inválido ('$DB_MODE'). Use 'remote' ou 'docker'." exit 1 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 --- if ! command -v rclone &>/dev/null; then log "AVISO: rclone não encontrado. Pulando upload." else rclone copy "$BACKUP_DIR" "$GDRIVE_REMOTE" \ - --include "openmonetis_*" \ - --min-age 1s + --include "openmonetis_*" log "Upload concluído → $GDRIVE_REMOTE" # Limpeza remota