⛁ Backup Console

loading…
checking…
Appvs backupLast backup of this app
loading…

“vs backup” compares this environment's live app_data/<app> against the same path on the backup branch by content, so “up to date” means the bytes already match — not merely that a backup ran recently. Timestamps are not used: a running service rewrites its SQLite file constantly without changing a byte, and a restore produces new mtimes over content that already matches. The counts are files added / modified / removed since the last snapshot; hover a badge to see examples.

Backups commit each app's app_data/ content to the backup repository's main branch, alongside the TMS container history — always on top of the latest head, never forced, so environments cannot overwrite each other. Every backup first pushes the TMS container's own git history to the branch (same as the canvas Backup pill), so unpublished TMS commits are never left behind — if that push fails, the backup is aborted before anything is committed. Restores are done from the command line: scripts/backup_sync.sh pull. Note: databases are snapshotted hot; for a guaranteed-consistent full backup use scripts/backup_sync.sh push --stop. Analytics backup/restore is currently out of scope (n/a) — that environment will be deprecated.

📖 How to run a sync from the command line — step by step

All commands run on the host machine (not in a container), from the project root (di-digital-experience-ecosystem-poc/). The same guide is in the project README.md.

A — Check what's on the backup

  1. Show the remote head, recent commits and the last environment snapshot:
    scripts/backup_sync.sh status

B — Back up this environment (push)

  1. Full environment, with the stack paused briefly so every database is copied in a consistent state (recommended):
    scripts/backup_sync.sh push --stop
  2. Or a single app (same as this console's buttons), e.g.:
    scripts/backup_sync.sh push --app crm_service

C — Sync this environment from the backup (pull / restore)

  1. Get the latest code and rebuild the stack:
    git pull origin main
    docker compose down && docker compose up -d --force-recreate --build
  2. (Optional) Inspect what would be restored, without touching anything:
    scripts/backup_sync.sh pull --no-restore
  3. Restore app data from the backup (merge-per-app: only apps present in the snapshot are replaced; anything else local is left untouched). Add --app <name> to restore a single app:
    scripts/backup_sync.sh pull --yes
    ⚠ Restored apps' databases and media are replaced. The stack is stopped and restarted automatically, and the previous data is kept as app_data.pre-restore-<timestamp> — run without --yes first to see the exact restore/keep plan.
  4. Verify: all services healthy, and the TMS canvas Backup pill is green:
    docker compose ps

Pushes from any environment always build on the latest backup head and are never forced — if a push is rejected because another environment moved the head, just re-run it.