- 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.)
6.0 KiB
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 werden99_System/Logs/*.log— temporär, werden in gitea committed99_System/Skripte/Lock/*.lock— nur Concurrency-Schutznode_modules/— kann neu installiert werden.qmd/— QMD-Index, wird beim nächstenqmd embedneu 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 syncimmer nach Ingest ausführen — sichert die Wiki-Updates sofortmindomat indexbei 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 |