mirror of
https://github.com/felipegcoutinho/openmonetis.git
synced 2026-05-09 11:01:45 +00:00
refactor: simplifica backup.sh — pg_restore, log dinâmico e rclone escopado
- Substitui terceiro pg_dump (data-only) por pg_restore sobre o .dump já criado, eliminando uma conexão extra ao banco em ambos os modos - Move timestamp para dentro de log() para refletir o horário real de cada mensagem, não apenas o instante de início do script - Escopa rclone copy por TIMESTAMP para não re-enviar backups anteriores a cada execução Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -48,9 +48,7 @@ RETENTION_REMOTE_DAYS=30
|
|||||||
# ============================================================
|
# ============================================================
|
||||||
|
|
||||||
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M")
|
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M")
|
||||||
LOG_PREFIX="[$(date '+%Y-%m-%d %H:%M:%S')]"
|
log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*"; }
|
||||||
|
|
||||||
log() { echo "$LOG_PREFIX $*"; }
|
|
||||||
|
|
||||||
mkdir -p "$BACKUP_DIR"
|
mkdir -p "$BACKUP_DIR"
|
||||||
|
|
||||||
@@ -69,9 +67,6 @@ 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"
|
||||||
@@ -79,15 +74,15 @@ 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
|
||||||
|
|
||||||
|
# Extrai dados puros do dump custom (sem nova conexão ao banco)
|
||||||
|
pg_restore --data-only --schema=public --no-owner --no-privileges \
|
||||||
|
"$DUMP_FILE" | gzip > "$DATA_FILE"
|
||||||
|
|
||||||
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)"
|
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 ---
|
||||||
@@ -95,7 +90,7 @@ 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_${TIMESTAMP}*"
|
||||||
log "Upload concluído → $GDRIVE_REMOTE"
|
log "Upload concluído → $GDRIVE_REMOTE"
|
||||||
|
|
||||||
# Limpeza remota
|
# Limpeza remota
|
||||||
|
|||||||
Reference in New Issue
Block a user