La mayoría de los espacios de Confluence tienen un puñado de páginas que importan más que el resto: el runbook de incidentes, el procedimiento de recuperación, la lista de contactos de guardia, el procedimiento operativo estándar que un auditor pedirá ver. Una copia de seguridad del espacio entero las protege junto con todo lo demás, y nuestra guía de acs2md lo cubre. Pero cuando un plan nombra páginas de forma explícita, el operador necesita respaldar, verificar y restaurar exactamente esas páginas, muchas veces desde un portátil y muchas veces con prisa. Eso es lo que hace acp2md desde v1.0.12: page get guarda una página con sus adjuntos, page check te dice si Confluence la sigue teniendo tal como la respaldaste, y page restore la devuelve después de mostrar el plan.

Este tutorial recorre el ciclo sobre una página, desde la primera copia hasta una restauración ensayada, y termina con la evidencia que produce. Los flags se resumen aquí; el manual de acp2md tiene la referencia completa.

Qué añade acp2md v1.0.12

acp2md siempre ha sido un exportador preciso y de solo lectura: una página por ID, título o URL pegada, a Markdown, a una nota de Obsidian o a su payload nativo en ADF o storage. La versión 1.0.12 añade la ruta de escritura que una copia de seguridad necesita, y deja la ruta de lectura exactamente como estaba:

  • page get --attachments-dir <dir> descarga los adjuntos de una página en <dir>/<page-id>/ y los describe, dentro del JSON de la página en ADF o en un archivo lateral en storage. Un archivo de página más su directorio de adjuntos es una copia de seguridad completa de la página.
  • page check compara una página respaldada con la página que Confluence tiene ahora: su estado, versión y cuerpo, y los adjuntos y etiquetas que ya no tiene. No cambia nada.
  • page restore devuelve la página. A una página que sigue vigente se le restaura su versión respaldada, conservando su ID y su historial, o se le escribe el cuerpo respaldado como una versión nueva; una página en la papelera, archivada o eliminada se crea de nuevo bajo su padre respaldado. Se añaden los adjuntos, las etiquetas y las propiedades de contenido que faltan. El plan se muestra y se confirma primero.
  • Es el primer comando de acp2md que escribe en Confluence, y nunca elimina, envía a la papelera, archiva ni mueve nada. --dry-run muestra el plan sin escribir.

Tanto page check como page restore leen también una página de una copia de espacio tomada con acs2md space get, así que un equipo que ejecuta la copia del espacio cada noche puede seguir recuperando una sola página con acp2md.

Paso 1 — Instalar, licenciar y ejecutar doctor

Instala desde Instalación y configuración inicial. acp2md se vende como Hobbyist para un operador y Multiple Seats para un equipo, ambos con una prueba gratuita de 14 días; compáralos en la tienda de Climakers.

acp2md license activate --license-key TU_CLAVE_DE_LICENCIA
acp2md doctor

doctor confirma credenciales, conectividad y licencia, y desde v1.0.12 muestra la fila HTTP request timeout (cada petición tiene un plazo de diez minutos por defecto, así que una descarga bloqueada no puede dejar colgada una tarea programada) y una fila Latest version. Pon ACP2MD_CONFLUENCE_DOMAIN, ACP2MD_CONFLUENCE_USERNAME y ACP2MD_CONFLUENCE_API_TOKEN en el entorno de lo que ejecute la copia; la página de Configuración tiene todas las claves.

Paso 2 — Nombra las páginas que protege el plan

acp2md toma una página por ID, por título dentro de un espacio o por la URL que alguien pegó en el canal del incidente. Para una tarea de copia de seguridad, el ID es la elección estable: los títulos se renombran.

# Localiza los ID una vez
acp2md space pages by-key OPS

# Confirma la página antes de respaldarla
acp2md page properties by-id 2973106197

Apunta los ID en la tarea, uno por página protegida. Un plan de continuidad que dice “los runbooks están en Confluence” es más débil que uno que lista tres ID de página y el directorio donde viven sus copias.

Paso 3 — Respalda la página con sus adjuntos

acp2md page get by-id 2973106197 -o ./bcp/runbook.json --attachments-dir ./bcp/attachments

page get mantiene atlas_doc_format como valor por defecto, y es el formato correcto para una copia de página: el JSON contiene el título, el padre, la versión, las etiquetas y las propiedades de contenido de la página, que es todo lo que una restauración necesita para devolverla a su sitio. Los adjuntos quedan en ./bcp/attachments/2973106197/, y el JSON describe cada uno con su título, ID de archivo, versión, tamaño y suma de verificación, así que una restauración sabe qué subir y dónde se refiere a ello el cuerpo.

Si prefieres HTML storage, pasa -f storage; los adjuntos se describen entonces en ./bcp/attachments/2973106197.attachments.json, y las comprobaciones y restauraciones posteriores necesitan --title, porque un archivo storage no lleva el título de la página.

Ejecuta esto para cada página protegida, en un directorio que controles y conserves. Súbelo a Git si quieres diferencias entre copias; el JSON es estable.

Paso 4 — Comprueba la página frente a Confluence de forma programada

acp2md page check --file ./bcp/runbook.json --attachments-dir ./bcp/attachments --fail-on-drift -f json > ./bcp/runbook.check.json

El informe dice en qué estado está la página en vivo y qué difiere:

EstadoSignificado
okConfluence tiene la versión que respaldaste, con el mismo cuerpo
changedLa versión o el cuerpo en vivo difieren
renamedEl título en vivo difiere
movedLa página está bajo otro padre
trashedLa página está en la papelera
archivedLa página está archivada
elsewhereLa página vive ahora en otro espacio
missingConfluence ya no la tiene, o estas credenciales no pueden verla

También lista los adjuntos y etiquetas respaldados que la página en vivo ya no tiene. --fail-on-drift termina con un código distinto de cero cuando algo difiere, que es como un planificador levanta la alerta; el archivo JSON es el registro que conservas. Ejecútalo a diario para las páginas que nombra el plan, y vuelve a ejecutar page get cuando el cambio fuera legítimo, para que la copia siga a la página.

Paso 5 — Restaurar: qué ocurre en cada situación

# Mira primero
acp2md page restore --file ./bcp/runbook.json --attachments-dir ./bcp/attachments --dry-run

# Restaura la página, con sus adjuntos
acp2md page restore --file ./bcp/runbook.json --attachments-dir ./bcp/attachments

# Sin intervención, en un script
acp2md page restore --file ./bcp/runbook.json --attachments-dir ./bcp/attachments --yes

El plan va primero y nombra lo que va a pasar:

♻️  Restore "Release Checklist" from ./bcp/runbook.json
   Target space:  DevOps (DEVOPS)
   In Confluence: trashed
   Page:          create a new page under "2 - Operations" (3133376085)
   Attachments:   upload 3 (412.0 KB)
   Labels:        add release, ops
   Properties:    add the 2 backed-up ones the new page lacks
   Note:          the original page is trashed; the restore is a new page with a new ID

Restore this page? [y/N]

Lo que hace el --mode auto por defecto depende del estado de la página:

La página en ConfluenceQué hace page restore
Vigente, misma versiónDeja el cuerpo; añade los adjuntos, etiquetas y propiedades que falten
Vigente, versión más recienteRestaura la versión respaldada, conservando el ID y el historial de la página; si esa versión ya no está en el historial, escribe el cuerpo como versión nueva
Vigente, versión más antiguaEscribe el cuerpo respaldado como una versión nueva
En la papelera, archivada, en otro espacio o desaparecidaCrea una página nueva con el título, el cuerpo y el padre respaldados

--mode create siempre crea una página nueva y --mode update solo toca una página que está vigente. Tres flags más importan en la práctica:

  • --overwrite-properties. Las aplicaciones guardan estado en propiedades de contenido, por ejemplo una aprobación de control documental. Una propiedad que la página tiene con otro valor se conserva por defecto; pasa este flag para sustituirla por el valor respaldado.
  • --space-key y --title. Restaura en otro espacio, o con otro título, para un ensayo o una copia de archivo. Un espacio no puede tener dos páginas vigentes con el mismo título, así que cuando una página en vivo ya lo tiene, la restauración se detiene y nombra esa página.
  • --parent-id. Dónde va una página creada cuando el padre respaldado ha desaparecido; si no, queda en la raíz del espacio.

El mensaje de la versión restaurada nombra la fecha de la copia, nunca una ruta de tu máquina. Una creación cuya respuesta se pierde en la red se busca por título antes de hacer nada más, así que un reintento nunca produce un duplicado. Y una página creada es una página nueva: su ID, sus autores, su fecha de creación y su historial de versiones son nuevos, y los enlaces de otras páginas que apuntaban al ID antiguo siguen apuntando allí. La página Restaurar páginas documenta cada caso.

Paso 6 — Ensaya la restauración sin tocar el original

Las revisiones de cumplimiento piden una recuperación probada, no descrita. Restaura la copia en un espacio de archivo con un título de prueba, confirma que se abre con sus adjuntos y registra el resultado:

acp2md page restore --file ./bcp/runbook.json --attachments-dir ./bcp/attachments 
  --space-key BCPTEST --title "Runbook (prueba de recuperación 2026-Q4)" --yes

Retira la página de prueba a mano después; una restauración nunca elimina nada, ni siquiera sus propias páginas de prueba.

Paso 7 — Restaura una página desde una copia de espacio

Si el equipo ejecuta acs2md space get cada noche, acp2md puede comprobar y restaurar una sola página directamente desde esa copia, lo que mantiene a las dos herramientas sobre una misma copia:

acp2md page check --backup-dir /backups/DEVOPS --page-id 3134096561
acp2md page restore --backup-dir /backups/DEVOPS --page-id 3134096561 --dry-run

Qué aporta esto a un programa de gobernanza

La cláusula 7.5.3 de ISO 9001:2015 pide que la información documentada esté disponible donde se necesita, protegida y conservada; el control A.8.13 de ISO/IEC 27001:2022 pide copias de seguridad probadas. Para las páginas que un programa de calidad o de seguridad nombra, el ciclo anterior deja:

EvidenciaProducida por
Una copia completa de cada página nombradapage get --attachments-dir, de forma programada, en un directorio que conservas
Prueba de que la copia está al díapage check --fail-on-drift -f json, un registro por ejecución
Una restauración probadael ensayo trimestral en un espacio de archivo, y su comprobación
Una copia legible fuera de Confluencepage convert --include-metadata en Git, refrescada con --incremental

Climakers no está certificado bajo estos marcos; los archivos son la evidencia que presentas a tus propios auditores. El caso de negocio, y cómo la misma evidencia se relaciona con SOC 2 y NIS 2, está en la página de continuidad de negocio para Confluence.

Siguientes pasos

Comenta este artículo

Los comentarios están listos para Giscus, pero aún faltan los ajustes públicos del repositorio y la categoría.