- Python 76.8%
- HTML 23.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| deploy | ||
| sample | ||
| src | ||
| web | ||
| .gitignore | ||
| launch.py | ||
| README.md | ||
Confluence Backup Viewer
Web-Service, um ein Confluence-Space-Backup (ZIP) hochzuladen, es zu zerlegen und einzelne Seiten wiederherzustellen — als HTML, Markdown oder selbständige HTML-Datei (Bilder inline). Zusätzlich lässt sich ein Teil-Backup exportieren: ausgewählte Seiten samt ihrer Attachments als neues, re-importierbares Confluence-ZIP.
PoC-Stand: Python 3.11, nur Standardbibliothek, keine Dependencies.
Funktionsumfang
| Endpoint | Bedeutung |
|---|---|
POST /upload |
ZIP-Backup hochladen und zerlegen |
GET /pages |
Seitenliste (Titel, Version, Attachments, Vorschau) |
GET /page/<id> |
Seite als HTML (im App-Kontext, Attachments über /attachments/…) |
GET /page/<id>.md |
Seite als Markdown |
GET /page/<id>/download |
Selbständige HTML-Datei (Bilder als Data-URIs) |
GET /export?pids=2,3 |
Teil-Backup-Export: ausgewählte Seiten + deren Attachments als neues Confluence-ZIP |
GET /attachments/<page>/<id> |
Roh-Attachment (PNG, PDF, …) |
POST /reset |
Aktuelles Backup vergessen |
GET /health |
Status |
Formatannahmen
Atlassian-Space-Export (Doku: „Retrieving file attachments from a backup"):
entities.xml # Space, Page, BodyContent, Attachment als XML-Entities
attachments/<pageId>/<aid> # Layout <= 8.0
attachments/<pageId>/<aid>/<version> # Layout >= 8.1
Der Renderer übersetzt Storage-Format-XHTML in sauberes HTML und deckt die
üblichen Macros ab (panel, note, info, callout, warning, code,
expand, toc, user, ac:image, ac:link). Unbekannte Macros landen in
einer [Macro: …]-Box — nichts geht verloren, aber es ist kein 1:1-Clone von
Confluence.
Start
python3 src/server.py # Port 8321 (HOST/PORT per Env)
oder als Dienst (siehe deploy/conf-backup-viewer.service):
sudo cp deploy/conf-backup-viewer.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now conf-backup-viewer
curl -s http://HOST:8321/health
Der Dienst ist optional —
python3 src/server.pystartet denselben Server ohne systemd. Die Unit ist die Referenz-Vorlage für jede Hosting-Umgebung.
Testdaten
python3 src/make_sample.py # erzeugt sample/demo-projekt.xml.zip
Grenzen (ehrliche PoC-Grenzen)
- Rendering: regelbasierter Storage-Format-Konverter, keine 1:1-Parität.
- „Wiederherstellen" = Seite als HTML/MD/Datei rausholen (fertig).
- Teil-Backup-Export (nur ausgewählte Pages + Attachments in neues ZIP) — fertig:
GET /export?pids=…baut ein neuesentities.xml+attachments/…, das sauber re-importierbar ist (Round-trip durchparse_backup()verifiziert). - Re-Import in live Confluence (REST-API „Import as HTML") ist die nächste Ausbaustufe.
- Ein Backup = ein Modell im RAM (
/resetleert es).