julio101290 / postgresql-backup-manager
Librería para respaldo y restauración de bases de datos PostgreSQL con verificación de pg_dump, adaptado por julio101920.
Requires
- php: >=7.4
- phpmailer/phpmailer: ^6.8
README
PostgreSQL Backup Manager es una biblioteca PHP moderna para crear y restaurar respaldos de bases de datos PostgreSQL. Perfecta para entornos donde pg_dump
no está disponible, pero también lo aprovecha si está presente.
📚 Tabla de Contenido
- 🚀 Características
- 🛠️ Requisitos
- 📦 Instalación
- ⚙️ Uso
- 🔌 Ejemplo con CodeIgniter 4
- 🧪 Restauración desde archivo ZIP
- 🧾 Licencia
- 🙌 Agradecimientos
🚀 Características
✅ Detección automática de pg_dump
✅ Soporte para exportaciones comprimidas .zip
(solo PostgreSQL)
✅ Soporte completo para PDO
✅ Compatible con cualquier framework PHP (especialmente CodeIgniter 4)
✅ Restauración rápida y confiable
🛠️ Requisitos
- PHP 7.3 o superior
- Extensión
PDO
habilitada - PostgreSQL 9.6 o superior
- Opcional:
pg_dump
en el sistema para respaldos más eficientes
📦 Instalación
Instala el paquete usando Composer:
composer require julio101290/postgresql-backup-manager
⚙️ Uso
Inicialización
use PostgresqlBackupManager\PostgreSQLBackup; $pdo = new PDO("pgsql:host=localhost;port=5432;dbname=mi_base", "usuario", "contraseña"); $backup = new PostgreSQLBackup( $pdo, 'mi_base', 'usuario', 'contraseña', 'localhost', 5432, __DIR__ . '/backups' );
Crear un respaldo
$archivoSQL = $backup->backup(); // Sin compresión $archivoZip = $backup->backup(true); // Con compresión ZIP
Restaurar un respaldo
$backup->restore('/ruta/al/respaldo.sql'); $backup->restore('/ruta/al/respaldo.sql.zip'); // Si está comprimido
🔌 Ejemplo con CodeIgniter 4
public function restaurar($uuid) { $info = $this->backups->where('uuid', $uuid)->first(); $config = config('Database')->default; $pdo = new \PDO("pgsql:host={$config['hostname']};port={$config['port']};dbname={$config['database']}", $config['username'], $config['password']); $backup = new PostgreSQLBackup( $pdo, $config['database'], $config['username'], $config['password'], $config['hostname'], $config['port'] ); try { $backup->restore($info['SQLFile']); return $this->respondCreated(true, lang("backups.msg.restored")); } catch (Exception $e) { return $this->failServerError('Error al restaurar: ' . $e->getMessage()); } }
🧪 Restauración desde archivo ZIP
Si el respaldo fue generado con compresión ($backup->backup(true);
), se creará un archivo .sql.zip
. La clase restore()
detecta automáticamente si es un .zip
y lo descomprime para ejecutar el contenido.
📌 Asegúrate de que el archivo
.zip
solo contenga un.sql
.
🧾 Licencia
Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.
🙌 Agradecimientos
🔧 Basado en la implementación original de Ramazan Çetinkaya
🛠️ Adaptado y mejorado por julio101290