Volver a la wiki

Backup & Restore - CreaRack Pro

Backup & Restore - CreaRack Pro

Documento: Guia completa de la funcion de backup/restore Ultima actualizacion: 20-08-2026


Resumen

El sistema de backup exporta toda la configuracion del tenant (organizacion) como un archivo ZIP que contiene un backup_data.json con todos los datos y una carpeta uploads/ con imagenes de stencils y planos.


Endpoints

EndpointMetodoDescripcion
/api/racks/backup/fullGETDescarga backup ZIP completo
/api/racks/restore/fullPOSTRestaura desde ZIP (upload)

Acceso: Solo usuarios admin de la organizacion.


Que incluye el Backup

Datos incluidos (16 modelos)

#ModeloClave JSONCampos principales
1Organizationorganizationname, address, logo_path, settings
2RackGroupsgroupsname, color
3DeviceGroupsdevice_groupsname, color
4BoxCategoriesbox_categoriesname
5Stencilsstencilsname, category, image_path, manufacturer, default_u_height
6Racksracksname, location, height_u, status, notes, power_consumption, is_template, deleted_at
7Devicesracks[].devicesname, u_position, u_height, notes, model_data, status, management_config
8Blueprints (Maps)blueprintsname, image_path, scale, bg_opacity, routing_mode, dark_mode, cable_spread/curvature/width
9BlueprintPlacementsblueprints[].placementsrack_id, pos_x, pos_y, rotation, style_props
10MapAnnotationsblueprints[].annotationstype, data (JSON)
11ConfigBackupsconfig_backupsconfig_text, backup_type, vendor (ultimos 5 por device)
12ScriptTemplatesscript_templatesname, description, script_content, language
13Scriptsscriptsname, vendor, category, description, commands
14MonitoringTargetsmonitoring_targetsname, ip_address, ping/snmp/http_enabled, interval, config
15MonitoringAlertsmonitoring_alertsname, condition_type, threshold, severity
16DeviceProfilesdevice_profiles~53 campos: ip, vendor, model, SNMP, SSH, interfaces, deep_snmp_data, assigned_page (Ficha Central), role, location, notes, manual_fields, group_ids, creds propias de la ficha (v1.72.1)…

Archivos incluidos

ContenidoRuta en ZIP
Datos JSONbackup_data.json
Imagenes de stencilsuploads/stencils/
Imagenes de planos/mapsuploads/backgrounds/
Logos de organizacionuploads/logos/

Tipos de MapAnnotation (cables y otros)

typeDescripcionContenido de data
rack_connectionCable entre racks{"from": rack_id, "to": rack_id}
wallMuro/paredCoordenadas JSON
textEtiqueta de textoTexto + posicion
zoneZona/area coloreadaCoordenadas + color

Que NO incluye el Backup

ModeloRazon
User / CuentasSeguridad: no se exportan credenciales
AlertEventHistorial de alertas (datos de tiempo real)
MetricSample / AggregatedMetricMetricas historicas (almacenadas en VictoriaMetrics)
VendorProfileDatos globales del sistema, no especificos del tenant
AgentInstanceRuntime: se re-registra automaticamente al conectar
SystemLogAuditoria interna del sistema
Datos de localStorageCurvas Bezier manuales de cables, layouts de dashboard

Comportamiento de la Restauracion

Reglas generales

  1. IDs nuevos: Todos los modelos reciben PKs nuevas al restaurar. Los IDs del backup se descartan.
  2. Merge, no replace: Los datos se anaden junto a los existentes. NO se borran datos previos.
  3. Remapeo de FKs: Se mantienen tablas de mapeo (rack_map, device_map, etc.) para preservar integridad referencial.
  4. Deduplicacion: Modelos con restriccion unique usan get_or_create() — no se duplican: RackGroup, DeviceGroup, ScriptTemplate, MonitoringTarget, DeviceProfile (por nombre/IP).

Remapeo de IDs en cables

Los cables (rack_connection) contienen rack IDs en su campo data ({"from": 17, "to": 71}). Al restaurar, estos IDs se remapean automaticamente a los nuevos rack IDs del entorno destino. Si alguno de los racks referenciados no existe en el backup, el cable se omite silenciosamente.

Flujo de restauracion (orden)

1. Organization (metadata)
2. RackGroups → rack_group_map
3. DeviceGroups → device_group_map
4. BoxCategories → box_category_map
5. Stencils → stencil_map
6. Racks + Devices → rack_map + device_map
7. Blueprints + Placements + Annotations (cables remapeados)
8. ConfigBackups (rack_id + device_id remapeados)
9. ScriptTemplates (get_or_create por nombre)
10. Scripts
11. MonitoringTargets (get_or_create por nombre+IP)
12. MonitoringAlerts (target_id remapeado)
13. DeviceProfiles (get_or_create por IP; assigned_page + campos manuales + creds propias + grupos, v1.72.1)
14. Archivos uploads/ (extraidos al MEDIA_ROOT)

Uso desde la UI

Ruta actualizada 18-08-2026 (verificada por Edu al exportar): el menu vive ahora en Configuration → File Operations, no en el dropdown Config del Dashboard.

Exportar Backup

  1. Configuration → File Operations → Full System Backup
  2. Se descarga un archivo crearack_backup_<org>_YYYYMMDD_HHMMSS.zip

Restaurar Backup

  1. Configuration → File Operations → opcion de restore
  2. Seleccionar archivo ZIP
  3. Confirmar restauracion
  4. Los datos se anaden a la organizacion actual

⚠️ Restaurar el mismo backup DOS veces duplica racks, devices y blueprints (medido 18-08-2026 en STAGE con backup real: 100→200 racks, 212→424 devices, 4→8 blueprints). Solo deduplican stencils, grupos, monitoring targets (nombre+IP), device profiles y script templates. Regla: un backup se restaura UNA vez por organizacion — salvo que uses el restore selectivo (task #236, disponible desde v1.71.0): el modal deja elegir que racks entran, muestra un desplegable “What’s inside this backup” con el inventario completo de la maleta, y desde v1.73.0 tambien puedes marcar cero racks para traer solo los dominios transversales (stencils, grupos, monitorizacion, Signage, ITSM) sin duplicar nada de rack. Detalle en [[feature—racks—restore-selectivo-v171]] y [[entity—racks—service—apply-full-restore-from-zip]]. El JSON incluye ademas la clave ai_prompts (no listada en la tabla de 16 modelos de arriba).


Notas tecnicas


Historial de bugs corregidos

FechaBugFix
20-02-2026Cables de maps no aparecian al restaurar en otro entornoRack IDs dentro de rack_connection data no se remapeaban. Anadido remapeo from/to via rack_map
20-08-2026 (v1.72.1, task #236, PR #400)assigned_page y 12 campos mas de DeviceProfile (Ficha Central: role/location/notes/manual_fields/grupos + creds SNMPv3/SSH propias de la ficha) no se exportaban — las fichas Wireless/UPS/DSM llegaban vacias tras un restoreCampos anadidos al serializador de backup y al restore; ZIPs legacy sin assigned_page lo derivan del device_type (derive_assigned_page). Cazado por Edu en el click-test del ensayo. Detalle en [[entity—racks—service—run-full-backup]] y [[entity—racks—service—apply-full-restore-from-zip]]
20-08-2026 (v1.73.0, task #236, PR #402)Restaurar con 0 racks marcados (solo dominios transversales) se interpretaba como “sin seleccion” y disparaba un restore completo — if rack_ids: trataba la lista vacia igual que None, tanto en el endpoint como en la tarea HueyCambiado a rack_ids is not None en apply_full_restore_from_zip y en run_full_restore; nuevo flag selective en el endpoint para que el cliente declare la seleccion vacia explicitamente. Detalle en [[entity—racks—service—apply-full-restore-from-zip]]

Mantenido por: Equipo CreaRack

Véase también

Subir