Script para respaldar una base de datos PostgreSQL en local
Supongamos que tienes una base de datos PostgreSQL en un server al que tienes acceso vía SSH y que deseas de vez en cuando bajarla para trabajar en local con datos reales.
Este script te ayudará a realizar el respaldo y restauración en local de manera ultra rápida.
#!/bin/bash
# Función para generar timestamp
timestamp() {
date +"%Y%m%d_%H%M%S"
}
# Valores por defecto
DEFAULT_SSH_USER="osiel"
DEFAULT_SSH_IP="192.168.1.100"
DEFAULT_DB_USER="postgres"
DEFAULT_DB_NAME="mi_basedatos"
DEFAULT_BACKUP_FILE="respaldo"
# Función para leer input con valor por defecto
read_with_default() {
local prompt="$1"
local default="$2"
read -p "$prompt [$default]: " input
echo "${input:-$default}"
}
# Leer datos con valores por defecto
SSH_USER=$(read_with_default "Usuario SSH" "$DEFAULT_SSH_USER")
SSH_IP=$(read_with_default "IP del servidor SSH" "$DEFAULT_SSH_IP")
DB_USER=$(read_with_default "Usuario de la base de datos remota" "$DEFAULT_DB_USER")
DB_NAME=$(read_with_default "Nombre de la base de datos remota" "$DEFAULT_DB_NAME")
BACKUP_FILE=$(read_with_default "Prefijo para nombre del archivo de respaldo" "$DEFAULT_BACKUP_FILE")
# Generar nombre final del respaldo
FULL_BACKUP_FILE="${BACKUP_FILE}_$(timestamp).sql"
echo "Conectando al servidor remoto y generando respaldo..."
ssh ${SSH_USER}@${SSH_IP} "pg_dump -U ${DB_USER} -d ${DB_NAME}" > ${FULL_BACKUP_FILE}
if [ $? -eq 0 ]; then
echo "✅ Respaldo completado: ${FULL_BACKUP_FILE}"
else
echo "❌ Error al generar el respaldo. Verifica tus credenciales y conexión SSH."
exit 1
fi
# Preguntar si desea restaurar
read -p "¿Deseas restaurar este respaldo en tu base local? (s/n): " RESTORE_CONFIRM
if [[ "$RESTORE_CONFIRM" =~ ^[sS]$ ]]; then
read -p "Nombre de la base de datos local a restaurar: " LOCAL_DB
echo "Iniciando restauración en la base local '${LOCAL_DB}'..."
psql -U postgres -d ${LOCAL_DB} -f ${FULL_BACKUP_FILE}
if [ $? -eq 0 ]; then
echo "✅ Restauración completada."
else
echo "❌ Error al restaurar el respaldo."
fi
else
echo "Respaldo almacenado localmente. No se realizó restauración."
fi
Simplemente guarda este archivo como .sh y procede a ejecutarlo cada que necesites un respaldo, para ello iremos a la ruta donde lo has guardado:
cd /ruta/del/scriptY luego dale permisos de ejecución al archivo:
chmod +x backup_postgres_remote.shFinalmente ejecutalo:
./backup_postgres_remote.sh