Files
Jannik 6ce986c265
CI / test (push) Canceled after 0s
CI / webapp (push) Canceled after 0s
v2.0.12: Backup-Strategie dokumentiert
- docs/BACKUP.md: vollstaendige Backup-Anleitung
  - 3 Ebenen: lokal, gitea (automatisch), externes Backup
  - Empfohlene Strategie: woechentlich + monatlich
  - PowerShell-Backup-Skript mit robocopy + automatischer Cleanup
  - 4 Disaster-Szenarien + Loesungen:
    - Notiz geloescht (git checkout)
    - Vault weg (frischer Clone)
    - Letzter Sync vor Loeschung (Commit-Restore)
    - gitea selbst weg (neue Instanz + Remote-Update)
  - Backup-Hygiene: Verschluesselung, 3-2-1-Regel, Testen, Rotation
  - Vault-spezifische Tipps (sync nach Ingest, etc.)
2026-09-05 12:46:10 +02:00

6.0 KiB

Backup-Strategie für Mind-o-Mat

Vault-Daten sind kritisch. Diese Anleitung erklärt, wie du sie sicherst.

Drei Ebenen der Datensicherung

Ebene 1: Lokal (jederzeit)

  • Was: Der Vault-Ordner selbst (00_Inbox/, 10_Wiki/, etc.)
  • Wo: Auf deiner Festplatte, z. B. C:\GitHub\Mind-o-Mat-Vault
  • Schutz vor: Versehentlichem Löschen, Tippfehlern
  • Schutz NICHT vor: Festplatten-Crash, Diebstahl, Ransomware

Ebene 2: gitea (automatisch)

  • Was: Git-Historie des Vault-Repos
  • Wo: git.orfel.de/Jannik/Mind-o-Mat-Vault.git (oder eigene gitea-Instanz)
  • Schutz vor: Festplatten-Crash, Diebstahl
  • Schutz NICHT vor: Versehentlichem Push (force-push), Account-Compromise

Aktivierung: mindomat sync pusht nach gitea. Wird nach jedem Ingest automatisch empfohlen.

Ebene 3: Lokales Backup (manuell, empfohlen)

  • Was: Snapshot des Vault-Ordners auf externem Speicher
  • Wo: Externe Festplatte, NAS, Cloud-Backup (verschlüsselt)
  • Schutz vor: Festplatten-Crash, Diebstahl, Ransomware
  • Schutz vor allem

Empfohlene Backup-Strategie

Wöchentlich (oder täglich wenn aktiv)

# Snapshot mit Datum im Namen
$vault = "C:\GitHub\Mind-o-Mat-Vault"
$backup = "D:\Backups\Mindomat\$((Get-Date).ToString('yyyy-MM-dd'))"

# Ordner kopieren (rsync-ähnlich, PowerShell-nativ)
Copy-Item -Path $vault -Destination $backup -Recurse -Force

# Oder mit robocopy für inkrementelle Backups
robocopy $vault $backup /MIR /Z /XA:H /W:5

Monatlich: gitea-Snapshot exportieren

# Bare git clone (kein Working Tree, nur .git-Ordner)
$backup = "D:\Backups\Mindomat\git-snapshots\$(Get-Date -Format 'yyyy-MM')"
git clone --bare https://git.orfel.de/Jannik/Mind-o-Mat-Vault.git $backup

Bei jedem Sync: gitea-Historie ist automatisch da

Jeder mindomat sync macht einen git-Commit + Push. Die Historie ist immer in gitea. Lokale Notizen, die vor dem letzten Sync gemacht wurden, sind auf jeden Fall in gitea.

Was NICHT gesichert wird

  • 99_System/Cache/ — QMD-Embeddings, können neu generiert werden
  • 99_System/Logs/*.log — temporär, werden in gitea committed
  • 99_System/Skripte/Lock/*.lock — nur Concurrency-Schutz
  • node_modules/ — kann neu installiert werden
  • .qmd/ — QMD-Index, wird beim nächsten qmd embed neu erstellt

Diese sind in .gitignore und werden nicht committed.

Wiederherstellung

Aus gitea (häufigster Fall)

# Frischer Clone auf neuem Rechner
git clone https://git.orfel.de/Jannik/Mind-o-Mat-Vault.git C:\GitHub\Mein-Vault

# Tool installieren
cd C:\GitHub\Mind-o-Mat
npm install
npm run build
npm link

# QMD neu aufsetzen
cd C:\GitHub\Mein-Vault
npm install -g @tobilu/qmd
qmd collection add 00_Inbox --name inbox
# ... (alle 4)
qmd embed

Aus lokalem Backup

# Backup zurückspielen
Copy-Item -Path D:\Backups\Mindomat\2026-09-05 -Destination C:\GitHub\Mein-Vault -Recurse -Force

Aus gitea-Snapshot

# Bare clone in Working Tree umwandeln
git clone -b main D:\Backups\Mindomat\git-snapshots\2026-09 C:\GitHub\Mein-Vault

Disaster-Szenarien

"Ich habe versehentlich eine Notiz gelöscht"

# Im Vault:
git checkout HEAD~1 -- "00_Inbox/2026-09-05_Telefonat_Max.md"

"Mein ganzer Vault ist weg"

# Frischer Clone aus gitea
rm -rf C:\GitHub\Mind-o-Mat-Vault
git clone https://git.orfel.de/Jannik/Mind-o-Mat-Vault.git C:\GitHub\Mind-o-Mat-Vault

"Letzter Sync war vor der Löschung"

# Letzten guten Commit wiederherstellen
git log --oneline
# Finde letzten Commit VOR der Löschung
git checkout <commit-hash> -- .
git commit -m "Restore vor Datenverlust"
git push

"gitea selbst ist weg"

# Bare clone ist dein Backup (siehe oben)
# Neue gitea-Instanz aufsetzen, neuen Remote hinzufügen
git remote set-url origin https://neue-gitea.example.com/Jannik/Mind-o-Mat-Vault.git
git push -u origin main

Backup-Skript (täglich via Windows-Aufgabenplanung)

# backup-mindomat.ps1
$vault = "C:\GitHub\Mind-o-Mat-Vault"
$backupRoot = "D:\Backups\Mindomat"
$today = Get-Date -Format "yyyy-MM-dd"
$backupPath = Join-Path $backupRoot $today

# Sicherstellen, dass das Backup-Verzeichnis existiert
New-Item -ItemType Directory -Path $backupRoot -Force | Out-Null

# Sync zu gitea zuerst (nur lokale Aenderungen sichern)
Push-Location $vault
try {
    mindomat sync 2>&1 | Out-Null
} catch { Write-Warning "Sync fehlgeschlagen: $_" }
Pop-Location

# Snapshot machen
robocopy $vault $backupPath /MIR /Z /XA:H /W:5 /R:3

# Alte Backups loeschen (aelter als 30 Tage)
Get-ChildItem -Path $backupRoot -Directory |
    Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } |
    Remove-Item -Recurse -Force

Write-Host "Backup fertig: $backupPath"

In Windows-Aufgabenplanung:

  • Trigger: Täglich um 03:00
  • Aktion: powershell -File C:\Scripts\backup-mindomat.ps1

Backup-Hygiene

  • Verschlüsselung bei Cloud-Backups: Cryptomator, VeraCrypt, oder Backup-Tool mit integrierter Verschlüsselung
  • 3-2-1-Regel: 3 Kopien, auf 2 verschiedenen Medien, 1 Off-Site
  • Testen! Backup regelmäßig testweise wiederherstellen, sonst ist es wertlos
  • Rotation: Tägliche Backups für 7 Tage, wöchentliche für 4 Wochen, monatliche für 12 Monate

Vault-spezifische Tipps

  • mindomat sync immer nach Ingest ausführen — sichert die Wiki-Updates sofort
  • mindomat index bei großen Änderungen — die landkarte.json ist im Repo, also versioniert
  • QMD-Embeddings neu generieren ist teuer (~Minuten), aber einmal generiert sind sie im QMD-Cache und werden nicht ins Repo committed (gitignored)
  • 99_System/Skripte/Lock/ prüfen, falls Sync hängt — alte Locks können manuell gelöscht werden

Zusammenfassung

Ebene Was Wo Wie oft Automatisch
1 Vault lokal Festplatte immer n/a
2 gitea-Historie git.orfel.de bei jedem mindomat sync semi-automatisch
3 Lokales Backup Externe Platte / NAS wöchentlich via Aufgabenplanung