{"id":34524592,"url":"https://github.com/edummorenolp/universal-backup-microservice","last_synced_at":"2026-04-25T02:37:45.336Z","repository":{"id":322495569,"uuid":"1086624515","full_name":"EduMMorenolp/Universal-Backup-Microservice","owner":"EduMMorenolp","description":"Microservicio universal de backup y análisis de bases de datos Sequelize para cualquier proyecto.","archived":false,"fork":false,"pushed_at":"2025-11-04T18:53:40.000Z","size":111,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"develop","last_synced_at":"2025-11-04T20:26:04.158Z","etag":null,"topics":["backend","backup","javascript","microservice","nodejs"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EduMMorenolp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-30T17:11:53.000Z","updated_at":"2025-11-04T18:53:44.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/EduMMorenolp/Universal-Backup-Microservice","commit_stats":null,"previous_names":["edummorenolp/universal-backup-microservice"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/EduMMorenolp/Universal-Backup-Microservice","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EduMMorenolp%2FUniversal-Backup-Microservice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EduMMorenolp%2FUniversal-Backup-Microservice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EduMMorenolp%2FUniversal-Backup-Microservice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EduMMorenolp%2FUniversal-Backup-Microservice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EduMMorenolp","download_url":"https://codeload.github.com/EduMMorenolp/Universal-Backup-Microservice/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EduMMorenolp%2FUniversal-Backup-Microservice/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27995843,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-24T02:00:07.193Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backend","backup","javascript","microservice","nodejs"],"created_at":"2025-12-24T05:04:42.781Z","updated_at":"2025-12-24T05:05:31.063Z","avatar_url":"https://github.com/EduMMorenolp.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🔄 Universal Backup Microservice\n\nMicroservicio universal de backup y análisis de bases de datos Sequelize para cualquier proyecto.\n\n## 🎯 Características\n\n### Características Básicas\n- ✅ **Análisis Automático** - Inspecciona estructura de BD y modelos\n- ✅ **Resolución de Dependencias** - Ordena modelos según claves foráneas\n- ✅ **Backup Universal** - Funciona con cualquier BD Sequelize\n- ✅ **Multi-Formato** - Genera seeders, JSON o SQL\n- ✅ **API REST** - Endpoints para análisis y extracción\n- ✅ **Multi-Servicio** - Gestiona múltiples bases de datos\n- ✅ **Local y Nube** - Soporta bases de datos locales y en la nube\n\n### Características Avanzadas\n- ✅ **Backups Programados** - Cron scheduling con retención automática\n- ✅ **Comparación de Backups** - Detecta diferencias entre backups\n- ✅ **Upload a S3 con Metadatos** - Compresión, metadatos estructurados y manifest.json\n- ✅ **Restore Completo** - Restauración con transacciones y rollback automático\n- ✅ **Métricas Completas** - Estadísticas de backups y base de datos\n- ✅ **Backup Incremental** - Base para backups diferenciales\n- ✅ **Análisis de Esquemas** - Extrae estructura de BD y genera migraciones\n- ✅ **Migraciones Incrementales** - Detecta cambios entre esquemas y genera migraciones\n\n## 🚀 Instalación\n\n```bash\ncd backup-microservice\nnpm install\n```\n\n## ⚙️ Configuración\n\n### 1. Variables de Entorno\n\nCopiar `.env.example` a `.env`:\n\n```env\nPORT=4000\nBACKUP_DIR=./backups\n\n# AWS S3 (opcional - para upload a S3)\nAWS_ACCESS_KEY_ID=your_access_key\nAWS_SECRET_ACCESS_KEY=your_secret_key\nAWS_REGION=us-east-1\nAWS_BUCKET_NAME=your-bucket-name\n```\n\n### 2. Configurar Servicios\n\nEditar `config/services.json`:\n\n```json\n{\n  \"services\": [\n    {\n      \"name\": \"my-backend\",\n      \"database\": {\n        \"host\": \"localhost\",\n        \"port\": 5432,\n        \"database\": \"my_database\",\n        \"username\": \"postgres\",\n        \"password\": \"password\"\n      }\n    }\n  ]\n}\n```\n\n## 🎮 Uso\n\n### Iniciar Microservicio\n\n```bash\nnpm start\n# o en desarrollo\nnpm run dev\n```\n\nEl servidor estará disponible en `http://localhost:4000`\n\n## 📚 Documentación\n\nLa documentación completa está organizada en la carpeta `documents/`:\n\n- **[API-ENDPOINTS.md](documents/API-ENDPOINTS.md)** - Documentación completa de todos los endpoints\n- **[ADVANCED-FEATURES.md](documents/ADVANCED-FEATURES.md)** - Guía de características avanzadas\n- **[CLOUD-DATABASES.md](documents/CLOUD-DATABASES.md)** - Configuración para bases de datos en la nube\n- **[ARCHITECTURE.md](documents/ARCHITECTURE.md)** - Arquitectura y estructura del microservicio\n- **[EXAMPLES.md](documents/EXAMPLES.md)** - Ejemplos de uso y casos prácticos\n\n## 🔧 API Endpoints - Resumen\n\n### Básicos\n- `GET /health` - Health check\n- `POST /api/backup/analyze` - Analizar base de datos\n- `POST /api/backup/extract` - Extraer backup (completo o incremental)\n- `GET /api/backup/list` - Listar backups\n- `DELETE /api/backup/database/:dbName` - Eliminar todos los backups de una BD\n\n### Avanzados\n- `POST /api/advanced/schedule` - Programar backup automático\n- `GET /api/advanced/schedules` - Listar backups programados\n- `DELETE /api/advanced/schedule/:id` - Cancelar backup programado\n- `POST /api/advanced/compare` - Comparar dos backups\n- `POST /api/advanced/upload-s3` - Subir backup a S3 con metadatos\n- `GET /api/advanced/metrics` - Obtener métricas\n\n### Restore\n- `POST /api/restore` - Restaurar backup en BD destino\n- `POST /api/restore/info` - Obtener información de backup\n- `POST /api/restore/validate` - Validar BD destino\n- `POST /api/restore/clean` - Limpiar BD destino\n\n### Testing\n- `POST /api/test/run` - Ejecutar tests automáticos\n\n### Schema\n- `POST /api/schema/extract` - Extraer estructura de BD y generar migraciones\n- `POST /api/schema/incremental` - Detectar cambios entre esquemas y generar migraciones incrementales\n\nVer documentación completa en [documents/API-ENDPOINTS.md](documents/API-ENDPOINTS.md)\n\n## 📊 Flujo de Trabajo Básico\n\n### 1. Analizar Base de Datos\n\n```bash\ncurl -X POST http://localhost:4000/api/backup/analyze \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"dbConfig\": {\"host\": \"localhost\", \"port\": 5432, \"database\": \"my_db\", \"username\": \"postgres\", \"password\": \"pass\"}}'\n```\n\n### 2. Generar Backup\n\n```bash\ncurl -X POST http://localhost:4000/api/backup/extract \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"dbConfig\": {...}, \"options\": {\"chunkSize\": 300, \"format\": \"seeders\"}}'\n```\n\n### 3. Restaurar Backup\n\n```bash\ncurl -X POST http://localhost:4000/api/restore \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"database\": \"my_db\", \"backupId\": \"backup-20250128-143022\", \"targetDbConfig\": {...}, \"options\": {\"force\": true}}'\n```\n\n## 🎯 Casos de Uso\n\n1. **Backup Automático** - Programar backups diarios con retención\n2. **Migración de Datos** - Entre entornos (dev → staging → prod)\n3. **Disaster Recovery** - Restore rápido con seeders generados\n4. **Análisis de Estructura** - Documentar y entender BD\n5. **Datos de Prueba** - Generar datasets consistentes\n6. **Auditoría** - Comparar backups para detectar cambios\n7. **Almacenamiento Cloud** - Upload automático a S3\n8. **Migraciones de Esquema** - Generar migraciones de Sequelize desde estructura de BD\n9. **Control de Cambios** - Detectar diferencias entre versiones de BD y generar migraciones incrementales\n\n## 📁 Estructura de Backups\n\nLos backups se organizan por nombre de base de datos:\n\n```\nbackups/\n├── my_database/\n│   ├── backup-20250128-143022/          # Backup completo\n│   │   ├── metadata.json\n│   │   ├── 20250128120000-roles.cjs\n│   │   ├── 20250128120001-users-part-1.cjs\n│   │   └── ...\n│   ├── incremental-20250128-150000/     # Backup incremental\n│   │   ├── metadata.json\n│   │   ├── 20250128150000-inc-new-posts-part-1.cjs\n│   │   ├── 20250128150001-inc-modified-users-part-1.cjs\n│   │   ├── 20250128150002-inc-deleted-comments-part-1.cjs\n│   │   └── ...\n│   └── backup-20250128-160000/\n│       └── ...\n└── another_database/\n    └── backup-20250128-160000/\n        └── ...\n```\n\n### Tipos de Backup\n\n- **Completo** (`backup-*`): Todos los datos de la BD\n- **Incremental** (`incremental-*`): Solo cambios desde último backup\n  - `inc-new-*`: Registros nuevos (INSERT)\n  - `inc-modified-*`: Registros modificados (UPDATE)\n  - `inc-deleted-*`: Registros eliminados (soft delete)\n\n## 🌐 Bases de Datos Soportadas\n\nCompatible con cualquier PostgreSQL accesible por red:\n\n- **Local** - PostgreSQL en localhost\n- **AWS RDS** - Amazon Relational Database Service\n- **Google Cloud SQL** - Google Cloud Platform\n- **Azure Database** - Microsoft Azure\n- **Heroku Postgres** - Heroku managed database\n- **DigitalOcean** - Managed Databases\n- **Cualquier PostgreSQL** - Con acceso de red\n\nVer configuración detallada en [documents/CLOUD-DATABASES.md](documents/CLOUD-DATABASES.md)\n\n## 🔒 Seguridad\n\n- ✅ No almacena credenciales (solo en memoria durante conexión)\n- ✅ Conexiones temporales y cerradas después de uso\n- ✅ Backups locales por defecto\n- ✅ Soporte SSL para conexiones seguras\n- ✅ Sin acceso externo por defecto\n- ✅ Credenciales S3 opcionales y configurables\n\n## 🚀 Características Destacadas\n\n### Backups Programados\n```javascript\n// Backup diario a las 2 AM, retención de 7 días\n{\n  \"schedule\": \"0 2 * * *\",\n  \"retentionDays\": 7\n}\n```\n\n### Comparación de Backups\n```javascript\n// Detecta diferencias entre dos backups\n{\n  \"backupId1\": \"backup-20250128-143022\",\n  \"backupId2\": \"backup-20250128-150000\"\n}\n```\n\n### Upload a S3 con Metadatos\n```javascript\n// Comprime, sube con metadatos y genera manifest.json\n{\n  \"backupId\": \"backup-20250128-143022\",\n  \"s3Config\": {\n    \"bucket\": \"my-backups\",\n    \"region\": \"us-east-1\"\n  }\n}\n// Genera:\n// - backup.zip con metadatos (database, records, version, size)\n// - manifest.json con resumen completo\n```\n\n### Restore con Transacciones\n```javascript\n// Restaura con rollback automático en caso de error\n{\n  \"database\": \"my_database\",\n  \"backupId\": \"backup-20250128-143022\",\n  \"targetDbConfig\": {...},\n  \"options\": {\n    \"force\": true  // Limpia BD automáticamente\n  }\n}\n```\n\n### Métricas Completas\n- Total de backups por base de datos\n- Tamaño total de backups\n- Estadísticas de registros\n- Información de tablas\n\n## 📦 Tecnologías\n\n- **Node.js** - Runtime\n- **Express** - API REST\n- **Sequelize** - ORM y análisis de modelos\n- **PostgreSQL** - Base de datos soportada\n- **node-cron** - Scheduling de backups\n- **AWS SDK** - Upload a S3\n- **archiver** - Compresión de backups\n\n## 📝 Notas Importantes\n\n- Compatible con PostgreSQL (local y nube)\n- Requiere Sequelize en servicios objetivo\n- Genera seeders con formato seguro (IDs específicos en down)\n- Fragmentación automática en chunks de 300 registros\n- Funciona con cualquier BD accesible por red\n- Backups organizados por nombre de base de datos\n\n## 🔄 Roadmap\n\n- [x] Análisis automático de modelos\n- [x] Resolución de dependencias\n- [x] Extracción con chunking\n- [x] Backups programados (cron)\n- [x] Comparación de backups\n- [x] Upload a S3 con metadatos y manifest\n- [x] Restore con transacciones y rollback\n- [x] Métricas y estadísticas\n- [x] Backup incremental completo (detecta nuevos, modificados y eliminados)\n- [x] Sistema de testing automático\n- [x] Eliminación masiva de backups por BD\n- [x] Análisis de esquemas de BD y generación de migraciones\n- [x] Migraciones incrementales para cambios de estructura\n- [ ] Anonimización de datos\n- [ ] Dashboard web\n- [ ] Soporte para MySQL\n- [ ] Notificaciones (email/webhook)\n- [ ] Download desde S3\n- [ ] Restore desde S3\n\n## 📖 Documentación Adicional\n\n- [Postman Collection](Universal%20Backup%20Microservice.postman_collection.json) - Colección completa de endpoints\n- [CHANGELOG.md](CHANGELOG.md) - Historial de cambios\n\n## 🤝 Contribución\n\nEste es un microservicio universal diseñado para ser independiente y reutilizable en cualquier proyecto.\n\n## 📄 Licencia\n\nMIT\n\n---\n\n**Microservicio universal para cualquier proyecto Sequelize**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedummorenolp%2Funiversal-backup-microservice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedummorenolp%2Funiversal-backup-microservice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedummorenolp%2Funiversal-backup-microservice/lists"}