{
"meta": {
"title": "Crear copias — flujo interactivo de copia | ProxMenux",
"description": "El flujo interactivo de copia en ProxMenux. Dos puntos de entrada (menú TUI de Scripts y UI Web del Monitor), tres destinos, dos modos de perfil, un paso común de staging y un diálogo de confirmación. Documenta la matriz de seis opciones, los perfiles Default y Custom, y qué ve el usuario entre seleccionar una copia y ver el archivo aterrizando en el destino.",
"ogTitle": "ProxMenux Backup — crear copias",
"ogDescription": "El flujo interactivo de copia con tres destinos, dos perfiles y un paso común de staging.",
"twitterTitle": "Crear copias | ProxMenux",
"twitterDescription": "Flujo interactivo de copia con tres destinos y dos modos de perfil."
},
"header": {
"title": "Crear copias",
"description": "El flujo interactivo de copia: elegir un destino y un perfil, revisar el resumen de confirmación, y ver el archivo aterrizando. Dos puntos de entrada comparten el mismo backend y producen archivos idénticos.",
"section": "Backup & Restore"
},
"intro": {
"title": "Dos puntos de entrada, funcionalidad idéntica",
"body": "El TUI de Scripts y la UI Web del Monitor exponen exactamente la misma funcionalidad. Cada copia — manual o programada — pasa por la misma matriz de elección (tres destinos × dos perfiles) e invoca la misma función backend por celda (_bk_pbs, _bk_borg o _bk_local). Los archivos producidos desde uno u otro punto de entrada son indistinguibles. Cuál usar es una cuestión de preferencia: el TUI es amigable por SSH y admite scripting; el Monitor ofrece click-y-elegir y convive con las vistas de notificaciones y de tail del log."
},
"entryPoints": {
"heading": "Los dos puntos de entrada",
"rows": [
{
"entry": "ProxMenux Scripts (TUI)",
"path": "menu → Utilities → Host Config Backup",
"detail": "Flujo basado en diálogos, amigable por SSH. El menú principal presenta las seis opciones directamente. Usa backup_menu en backup_host.sh."
},
{
"entry": "ProxMenux Monitor (UI Web)",
"path": "Pestaña Backups → Create backup",
"detail": "Flujo en estilo asistente. Las mismas seis opciones presentadas como formulario de dos pasos (destino → perfil). Se invocan las mismas funciones backend por la API Flask."
}
]
},
"modes": {
"heading": "Copias manuales vs programadas",
"body": "Las copias se pueden producir en dos modos: manuales (el flujo interactivo que documenta esta página — el usuario elige un destino y un perfil desde un menú y ve el archivo aterrizando) o programadas (un trabajo desatendido que se ejecuta en un timer estilo cron y aplica la retención configurada en el trabajo). Ambos modos soportan los mismos tres destinos y los mismos dos perfiles, y ambos están disponibles desde los dos puntos de entrada — el menú TUI de Scripts y la pestaña Backups del Monitor. Los trabajos programados usan las mismas funciones backend que el flujo manual a través de run_scheduled_backup.sh; los archivos producidos son indistinguibles.",
"seeAlso": "La página de trabajos programados cubre el flujo completo, incluyendo cómo crear un trabajo, adjuntarlo a un timer vzdump de PVE existente, y configurar los valores de retención.",
"monitorAlt": "Pestaña Backups del Monitor de ProxMenux mostrando el diálogo New scheduled backup con los campos de destino, perfil, horario y retención.",
"monitorCaption": "Copia programada — Monitor de ProxMenux. El mismo diálogo estilo asistente que crea una copia manual lleva los campos de horario y retención al final para la ruta desatendida."
},
"matrix": {
"heading": "La matriz de seis opciones",
"intro": "La elección determina qué backend se ejecuta y qué estrategia de selección de rutas se aplica. Consulta las páginas específicas de cada destino para los detalles de configuración de cada celda.",
"rows": [
{
"combo": "1",
"destination": "PBS",
"profile": "Default",
"action": "Sube el perfil por defecto más los extras persistentes a un repositorio PBS configurado."
},
{
"combo": "2",
"destination": "Borg",
"profile": "Default",
"action": "Crea un archivo con el perfil por defecto más los extras persistentes en el repositorio Borg seleccionado."
},
{
"combo": "3",
"destination": "Local",
"profile": "Default",
"action": "Escribe un archivo .tar.zst con el perfil por defecto más los extras persistentes en el destino local configurado."
},
{
"combo": "4",
"destination": "PBS",
"profile": "Custom",
"action": "Abre el path picker antes de la subida a PBS; el usuario marca rutas y puede añadir nuevas."
},
{
"combo": "5",
"destination": "Borg",
"profile": "Custom",
"action": "Abre el path picker antes de crear el archivo Borg."
},
{
"combo": "6",
"destination": "Local",
"profile": "Custom",
"action": "Abre el path picker antes de escribir el .tar.zst local."
}
]
},
"profiles": {
"heading": "Perfil Default vs Custom",
"defaultTitle": "Perfil Default",
"defaultBody": "El perfil por defecto es la lista curada de hb_default_profile_paths (documentada en Cómo funciona bajo Categorías de rutas) más cada entrada del fichero de extras persistentes /usr/local/share/proxmenux/backup-extra-paths.txt. El usuario confirma el destino y las opciones de cifrado y la copia continúa sin más selección de rutas.",
"customTitle": "Perfil Custom",
"customBody": "El perfil Custom abre un checklist mostrando cada ruta del perfil por defecto (sin marcar) y cada extra persistente (premarcado, prefijado con [+]). El usuario marca el conjunto para esa ejecución y puede pulsar Add custom path para añadir una nueva ruta absoluta. Cualquier ruta añadida en línea se persiste en backup-extra-paths.txt para que futuras copias la recojan automáticamente sin volver a añadirla. Quitar la marca a un extra persistente lo desmarca para esa ejecución pero no lo elimina del fichero — la eliminación es una acción Manage custom paths separada, fuera del flujo de copia.",
"customPickerAlt": "Checklist del perfil Custom mostrando las rutas del perfil por defecto (sin marcar) y los extras persistentes (premarcados con prefijo [+]), más botones para añadir una ruta nueva o confirmar la selección.",
"customPickerCaption": "Perfil Custom — el path picker. Las rutas del perfil por defecto aparecen sin marcar; los extras persistentes aparecen premarcados con prefijo [+]. El usuario marca el conjunto para esa ejecución.",
"manageCustomAlt": "Menú Manage custom paths mostrando la lista de extras persistentes y opciones para añadirlos, eliminarlos o editarlos.",
"manageCustomCaption": "Manage custom paths — el punto de entrada donde se añaden o eliminan los extras persistentes. Cada ruta listada aquí se incluye automáticamente en las copias en modo Default sin necesidad de abrir el picker Custom."
},
"commonPipeline": {
"heading": "Qué se ejecuta con independencia del destino",
"intro": "Después de resolver el perfil, cada backend ejecuta el mismo pipeline de staging antes de divergir a su propio camino de subida. hb_prepare_staging ensambla el árbol del archivo en /tmp/proxmenux-DESTINATION-stage.XXXXXX y pobla cada uno de los tres bloques.",
"steps": [
{
"step": "1",
"name": "Ensamblado del rootfs",
"detail": "Ejecuta rsync -a por cada ruta seleccionada hacia staging_root/rootfs/. Excluye subrutas volátiles (historial de bash, cachés, papelera) de /root/. Las rutas ausentes en el origen se registran en metadata/missing_paths.txt sin detener la copia."
},
{
"step": "2",
"name": "Generación del manifiesto",
"detail": "build_manifest.sh orquesta los seis colectores y escribe manifest.json en la raíz del staging. Si un colector falla, la sección afectada hace fallback a un default vacío documentado; el manifiesto sigue siendo válido."
},
{
"step": "3",
"name": "Inventario de paquetes",
"detail": "apt-mark showmanual se captura tal cual en metadata/packages.manual.list. El estado de componentes ya está dentro del rootfs restaurado (components_status.json) porque /usr/local/share/proxmenux/ forma parte del perfil por defecto."
},
{
"step": "4",
"name": "Info de la ejecución",
"detail": "metadata/run_info.env registra la identidad de la ejecución de copia — hostname, timestamp, versión del kernel — usada por el chequeo de compatibilidad de la restauración para determinar la dirección cross-kernel."
},
{
"step": "5",
"name": "Notificación (start)",
"detail": "Se dispara hb_notify_lifecycle \"start\". Si las notificaciones están configuradas en el Monitor, se emite un evento usuario-facing Host backup started. Silencioso si no hay canales configurados."
}
]
},
"included": {
"heading": "Qué entra y qué se excluye",
"intro": "Cada ruta del perfil resuelto (default + extras persistentes + selección en modo Custom) se copia con rsync -aAXH --numeric-ids. Una lista de exclusiones compartida aplica a cada ruta, y dos directorios llevan exclusiones específicas adicionales.",
"globalTitle": "Exclusiones globales (aplican a cada ruta)",
"globalItems": [
"images/ — dumps de imágenes.",
"dump/ — salidas de vzdump.",
"tmp/ — ficheros temporales.",
"*.log — ficheros de log."
],
"rootTitle": "Exclusiones de /root/",
"rootBody": "/root/ forma parte del perfil por defecto para que los scripts y config del usuario entren en el archivo. Se descartan los subpaths volátiles:",
"rootItems": [
".bash_history",
".cache/",
"tmp/",
".local/share/Trash/"
],
"proxmenuxTitle": "Exclusiones de /usr/local/share/proxmenux/",
"proxmenuxBody": "Este directorio contiene sólo estado de usuario — components_status.json, preferencias, caché post-install. El código que el destino ya tendrá de su propia instalación de ProxMenux se excluye para que una restauración no sobrescriba los binarios actuales del destino con versiones más antiguas:",
"proxmenuxItems": [
"restore-pending/, scripts/, web/",
"monitor-app/, monitor-app.*/, AppImage/",
"images/, json/",
"utils.sh, helpers_cache.json",
"ProxMenux-Monitor.AppImage*, install_proxmenux*.sh"
],
"notInProfileTitle": "Rutas fuera del perfil",
"notInProfileBody": "Todo lo que no esté listado en hb_default_profile_paths y no se haya añadido como ruta custom o extra persistente no forma parte de la copia. Ejemplos notables:",
"notInProfileItems": [
"Discos de VMs y LXCs — los gestiona vzdump, no esta funcionalidad. Los ficheros de configuración de los invitados bajo /etc/pve/nodes/*/qemu-server/*.conf y lxc/*.conf sí se capturan (viven bajo /etc/pve) para que la restauración reproduzca el inventario; los discos se re-adjuntan desde una copia existente de vzdump/PBS.",
"/boot y /boot/efi — los binarios del kernel, el initramfs y la partición ESP UEFI los regenera el propio destino con update-initramfs, update-grub o proxmox-boot-tool refresh tras la restauración. El bootloader nunca se copia verbatim.",
"Filesystems runtime del kernel y sistema — /proc, /sys, /dev y /run son pseudo-filesystems que produce el kernel y udev; no se persisten en ningún sitio.",
"Binarios de paquetes bajo /usr/bin, /usr/lib, /lib, /sbin — los reinstala el APT del destino a partir de packages.manual.list.",
"/var/log/, /var/tmp/, /var/cache/ — estado runtime por host, no se restaura.",
"/home/USUARIO — no está en el perfil por defecto. Añadirlo como ruta custom cuando un sistema tenga directorios home de usuario que deban sobrevivir a una restauración."
],
"customPathsTitle": "Cómo se tratan las rutas custom",
"customPathsBody": "Una ruta custom añadida en línea en modo Custom o persistida en backup-extra-paths.txt pasa por el mismo pipeline de rsync que las rutas del perfil por defecto. Se aplican las exclusiones globales. Si la ruta custom está bajo /root/ o /usr/local/share/proxmenux/, siguen aplicando las exclusiones específicas de arriba. Cada ruta archivada — default o custom — queda registrada en metadata/paths_archived.txt. Las rutas que no existen en el origen se registran en metadata/missing_paths.txt sin detener la copia."
},
"archiveStructure": {
"heading": "Estructura del archivo",
"intro": "El directorio de staging que produce cada backend sigue el mismo layout con independencia del destino. El tarball, el .pxar de PBS o el archivo Borg almacenan este árbol verbatim.",
"tree": "backup-[timestamp]/\n├── manifest.json # estado estructurado del host (kernel_params, hardware, storage, guests, components, source_host)\n├── metadata/\n│ ├── packages.manual.list # salida de apt-mark showmanual\n│ ├── run_info.env # hostname, timestamp, versión del kernel\n│ ├── paths_archived.txt # lista exacta de rutas que llegaron a rootfs/\n│ └── missing_paths.txt # rutas del perfil ausentes en el origen\n└── rootfs/\n ├── etc/ # /etc/pve, /etc/network, /etc/ssh, /etc/apt, ...\n ├── root/ # /root sin subpaths volátiles\n ├── usr/local/ # /usr/local/bin, /usr/local/sbin, /usr/local/share/proxmenux (sólo estado)\n └── var/ # /var/lib/pve-cluster, /var/spool/cron/crontabs"
},
"confirmation": {
"heading": "Resumen de confirmación",
"body": "Antes de que el backend escriba nada en el destino, ProxMenux muestra un diálogo resumen con el destino, el backup ID o nombre del archivo, el estado del cifrado y la lista de rutas que se copian. Cancelar aquí aborta la copia limpiamente — el directorio de staging se elimina por el hook trap definido en la función backend y ningún dato parcial llega al destino."
},
"writing": {
"heading": "Escritura en el destino",
"intro": "Una vez el usuario confirma, cada backend ejecuta su propio paso de escritura. La mecánica está cubierta en las páginas de cada destino; la superficie compartida son el log, el sidecar y la notificación de finalización.",
"rows": [
{
"topic": "Fichero de log",
"detail": "Cada backend escribe su salida completa en /tmp/proxmenux-DESTINATION-backup-YYYYMMDD_HHMMSS.log y, en caso de fallo, ofrece abrirlo en un diálogo scrollable. La ruta al log se imprime en el resumen de finalización sólo cuando el fichero tiene contenido."
},
{
"topic": "Sidecar (sólo local)",
"detail": "hb_write_archive_sidecar deposita un *.proxmenux.json junto al archivo local para que el Monitor lo identifique como copia de host de ProxMenux incluso tras movimientos o renombrados."
},
{
"topic": "Notificación (complete/fail)",
"detail": "Se dispara hb_notify_lifecycle \"complete\" o \"fail\" con duración, tamaño del archivo y — en fallos — la última línea del log que parezca un error."
}
]
},
"finishedScreens": {
"heading": "Cómo se ve una copia finalizada",
"intro": "El mismo evento de finalización lo exponen los dos puntos de entrada. El TUI escribe un bloque resumen en el terminal; la pestaña Backups del Monitor muestra la ejecución en la lista de archivos con badges de tamaño, duración y estado.",
"scriptsAlt": "TUI de ProxMenux Scripts mostrando una copia de host finalizada — destino, backup ID, ruta del snapshot, tamaño de datos, duración y estado de cifrado.",
"scriptsCaption": "Copia finalizada — ProxMenux Scripts (TUI). El bloque de finalización imprime el destino, backup ID, nombre del snapshot o archivo resultante, tamaño de datos, duración y estado de cifrado.",
"monitorAlt": "Pestaña Backups del Monitor de ProxMenux mostrando una entrada de copia de host finalizada con tamaño, duración, badge del método y indicador de cifrado.",
"monitorCaption": "Copia finalizada — pestaña Backups del Monitor de ProxMenux. La nueva copia aparece en la lista de archivos con el badge del método del destino, tamaño, duración y — cuando aplica — el indicador de cifrado."
},
"whereNext": {
"heading": "A dónde seguir",
"items": [
{
"label": "Destinos",
"href": "/docs/backup-restore/destinations",
"tail": " — detalles de configuración para Local, PBS y Borg."
},
{
"label": "Trabajos programados",
"href": "/docs/backup-restore/scheduled-jobs",
"tail": " — ejecutar la misma copia desatendida en un horario en lugar de interactivamente."
},
{
"label": "Restauración",
"href": "/docs/backup-restore/restoring",
"tail": " — el flujo que consume lo que esta página produce."
}
]
}
}