**Three new Crumbpages:** 1. **Pfad 21: Backup, RAID & Cron - In der Wolke** - 3-2-1 backup rule (3 copies, 2 media, 1 off-site) - RAID levels (0, 1, 5, 10) - "RAID is NOT backup!" - Cron jobs for automation - Rsync for incremental backups - Cloud vs. local backup strategies - "Ein Backup, das nicht getestet wurde, ist Hoffnung" 2. **Pfad 22: Hallo Nullfeld - Willkommen in der Crew!** - Philosophical interlude: "Du hast alles, was du jetzt brauchst" - What is the "Nullfeld"? (Stille vor der Bewegung) - Echo aus dem Nullfeld (Oz → OZM → OZMAI → Crumbforest) - Transition from consumer to creator - "Willkommen in der Crew, Krümel" - The OZM CrumbCodex (8 principles) 3. **Pfad 23: AI, Vektor & Philosophie - Samurai trifft Shaolin** 🥋🌲 - Samurai-Weg (deterministisch: Code, Regeln) vs. Shaolin-Weg (emergent: AI, Resonanz) - AI vs. KI (künstlich vs. konstruiert) - Symmetrie, Singularität, Emergenz - die drei Prinzipien - Vektoren (technisch: Mathematik, philosophisch: Richtung) - MCP, CRM, Qdrant - die Werkzeuge - "Was kostet die Frage eines Krümels im Quantenzeitalter?" - Hast du den OZM CrumbCodex verstanden? **Updated crumbforest-admin-vektor.md:** - Version: 2.0 → 3.0 (23 Pfade: Samurai ⟡ Shaolin) - Add Pfad 21, 22, 23 to overview table - Add detailed sections for each new path - Extend roadmap visualization: - Pfad 20: MASTER LEVEL - Pfad 21-22: Beyond Mastery (Reflexion) - Pfad 23: SAMURAI ⟡ SHAOLIN (Philosophy) - Update time estimates: ~34-42 hours total (was ~28-33) - Update progress tracker: 0/20 → 0/23 Pfade - Update learning resources list **The complete journey:** - Pfad 1-21: Samurai (Technical mastery, deterministic) - Pfad 22: Nullfeld (Pause, reflection) - Pfad 23: Shaolin (Philosophy, emergence, AI/KI) "Der Samurai folgt dem Code. Der Shaolin folgt dem Fluss. Du bist beides." 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
12 KiB
🧭 Crumbpage 21: Backup, RAID & Cron - In der Wolke
Subtitle: Daten sichern, Redundanz schaffen, Automatisierung meistern Pfad: 21 von 23 Schwierigkeit: ⭐⭐⭐⭐ (4/5) Zeit: ~3-4 Stunden Voraussetzungen: Pfad 9: Storage, Pfad 11: First Access
"Die einzige Backup-Strategie, die nicht funktioniert, ist keine zu haben." 🌲
📋 Was du in diesem Pfad lernst
✓ Backup-Strategien (3-2-1-Regel)
✓ RAID-Levels verstehen (0, 1, 5, 10)
✓ Cron-Jobs schreiben (automatisierte Backups)
✓ Rsync für inkrementelle Backups
✓ Cloud-Backup vs. lokale Backups
✓ Restore-Prozesse testen
🎯 Lernziele
Nach diesem Pfad kannst du:
- Die 3-2-1-Backup-Regel erklären und anwenden
- RAID-Arrays verstehen und konfigurieren
- Cron-Jobs für automatisierte Backups schreiben
- Rsync-Backups anlegen und wiederherstellen
- Backup-Strategien für verschiedene Szenarien entwerfen
🌱 Grundkonzepte
Konzept 1: Die 3-2-1-Regel
Was ist das? Die goldene Regel für Backups:
- 3 Kopien deiner Daten (Original + 2 Backups)
- 2 verschiedene Medien (z.B. Festplatte + Cloud)
- 1 Kopie off-site (außer Haus / anderer Standort)
Warum ist das wichtig?
Brand im Rechenzentrum? ─→ Off-site-Backup rettet dich
Festplatte kaputt? ───────→ Zweites Medium rettet dich
Ransomware? ──────────────→ Offline-Backup rettet dich
Beispiel-Strategie:
Original: /home/data/ (auf Laptop)
Backup 1: Externe Festplatte (USB)
Backup 2: NAS im Keller (Netzwerk)
Backup 3: Cloud (Hetzner Storage Box)
Konzept 2: RAID - Redundant Array of Independent Disks
Was ist das? Mehrere Festplatten arbeiten zusammen für:
- Redundanz (eine Platte stirbt → Daten bleiben)
- Performance (parallel lesen/schreiben)
Die wichtigsten RAID-Levels:
| RAID | Beschreibung | Min. Disks | Nutzbarer Space | Zweck |
|---|---|---|---|---|
| 0 | Striping (keine Redundanz) | 2 | 100% | Performance, NO BACKUP! |
| 1 | Mirroring (volle Kopie) | 2 | 50% | Redundanz, einfach |
| 5 | Striping + Parity | 3 | 66-80% | Balance Performance/Redundanz |
| 10 | Mirror + Stripe | 4 | 50% | Beste Performance + Redundanz |
⚠️ WICHTIG: RAID IST KEIN BACKUP!
RAID schützt vor: Hardware-Ausfall (eine Disk stirbt)
RAID schützt NICHT vor: Ransomware, Löschen, Brand, Diebstahl
Du brauchst: RAID + Backup!
Konzept 3: Cron - Der Zeitplaner
Was ist das? Cron ist der Unix-Daemon, der Befehle zu bestimmten Zeiten automatisch ausführt.
Syntax:
# ┌───────────── Minute (0 - 59)
# │ ┌───────────── Stunde (0 - 23)
# │ │ ┌───────────── Tag im Monat (1 - 31)
# │ │ │ ┌───────────── Monat (1 - 12)
# │ │ │ │ ┌───────────── Wochentag (0 - 7, 0 = Sonntag)
# │ │ │ │ │
# * * * * * /path/to/command
Beispiele:
# Jeden Tag um 2:00 Uhr
0 2 * * * /usr/local/bin/backup.sh
# Jede Stunde
0 * * * * /usr/local/bin/check-health.sh
# Jeden Montag um 3:00 Uhr
0 3 * * 1 /usr/local/bin/weekly-backup.sh
# Alle 15 Minuten
*/15 * * * * /usr/local/bin/sync.sh
🔧 Praktische Befehle
Befehl 1: rsync - Der Backup-König
# Grundlegende Syntax
rsync [optionen] quelle ziel
# Lokales Backup
rsync -av /home/user/data/ /mnt/backup/data/
# Remote Backup (SSH)
rsync -avz /home/user/data/ user@backup-server:/backups/data/
# Wichtige Flags:
# -a : Archive-Mode (behält Rechte, Timestamps)
# -v : Verbose (zeigt, was passiert)
# -z : Kompression (spart Bandbreite)
# -h : Human-readable Größen
# --delete : Löscht Dateien im Ziel, die in Quelle nicht mehr existieren
# --dry-run : Simuliert ohne Änderungen
⚠️ Slash-Magie:
# MIT Slash = Inhalt kopieren
rsync -av /source/ /dest/
# Ergebnis: /dest/ enthält die Dateien aus /source/
# OHNE Slash = Ordner kopieren
rsync -av /source /dest/
# Ergebnis: /dest/source/ enthält die Dateien
Inkrementelles Backup:
#!/bin/bash
# backup-incremental.sh
SOURCE="/home/user/data"
DEST="/mnt/backup"
DATE=$(date +%Y-%m-%d_%H-%M)
LATEST="$DEST/latest"
BACKUP="$DEST/backup-$DATE"
# Erstes Backup oder inkrementell?
if [ -d "$LATEST" ]; then
# Inkrementell mit Hard-Links
rsync -av --delete --link-dest="$LATEST" "$SOURCE/" "$BACKUP/"
else
# Erstes Backup
rsync -av "$SOURCE/" "$BACKUP/"
fi
# Symlink auf neuestes Backup
rm -f "$LATEST"
ln -s "$BACKUP" "$LATEST"
echo "Backup completed: $BACKUP"
Befehl 2: crontab - Zeitpläne verwalten
# Crontab bearbeiten
crontab -e
# Crontab anzeigen
crontab -l
# Crontab löschen (⚠️ Vorsicht!)
crontab -r
# Crontab eines anderen Users (als root)
crontab -u username -e
Beispiel-Crontab:
# Tägliches Backup um 2 Uhr nachts
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
# Wöchentliches Cleanup am Sonntag
0 4 * * 0 /usr/local/bin/cleanup-old-backups.sh
# Stündlicher Health-Check
0 * * * * /usr/local/bin/check-disk-space.sh
Tipp: Immer Logs schreiben!
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# Stdout und Stderr ins Log
Befehl 3: tar - Archivieren
# Backup erstellen (komprimiert)
tar -czf backup-$(date +%Y-%m-%d).tar.gz /home/user/data/
# Backup entpacken
tar -xzf backup-2025-12-13.tar.gz
# Inhalt anschauen (ohne entpacken)
tar -tzf backup-2025-12-13.tar.gz
# Flags:
# -c : Create (erstellen)
# -x : Extract (entpacken)
# -t : List (auflisten)
# -z : Gzip-Kompression
# -f : Dateiname folgt
# -v : Verbose
Verschlüsseltes Backup:
# Mit GPG verschlüsseln
tar -czf - /home/user/data/ | gpg -e -r your@email.com > backup.tar.gz.gpg
# Entschlüsseln und entpacken
gpg -d backup.tar.gz.gpg | tar -xzf -
💡 Best Practices
DO ✅
# 1. Backups testen (Restore simulieren)
rsync -av --dry-run /mnt/backup/latest/ /tmp/restore-test/
# 2. Backup-Logs behalten
echo "$(date): Backup started" >> /var/log/backup.log
# 3. Monitoring einbauen
if [ $? -eq 0 ]; then
echo "SUCCESS"
else
echo "FAILED" | mail -s "Backup failed!" admin@example.com
fi
# 4. Alte Backups automatisch löschen
find /mnt/backup/ -type f -name "backup-*.tar.gz" -mtime +30 -delete
# ^^^^^^^^^^^^^^^^
# Älter als 30 Tage
DON'T ❌
# 1. Nie Backups nur auf einem Medium
❌ Nur externe Festplatte
# 2. Nie Backups ungetestet lassen
❌ "Ich hab ein Backup" (aber nie wiederhergestellt)
# 3. Nie ohne Monitoring
❌ Cron läuft, aber niemand sieht Fehler
# 4. Nie Passwörter in Crontabs
❌ rsync user:password@server:/backup # Klartext!
✅ Nutze SSH-Keys stattdessen
🔥 Hands-On: Automatisiertes Backup-System
Setup 1: Lokales Rsync-Backup
# 1. Backup-Script erstellen
sudo mkdir -p /usr/local/bin
sudo nano /usr/local/bin/daily-backup.sh
#!/bin/bash
# /usr/local/bin/daily-backup.sh
SOURCE="/home/$(whoami)/wichtig"
DEST="/mnt/backup"
DATE=$(date +%Y-%m-%d_%H-%M)
LOG="/var/log/backup.log"
echo "$(date): Backup started" >> "$LOG"
# Backup mit rsync
rsync -av --delete "$SOURCE/" "$DEST/latest/" >> "$LOG" 2>&1
if [ $? -eq 0 ]; then
echo "$(date): Backup successful" >> "$LOG"
# Snapshot erstellen
cp -al "$DEST/latest" "$DEST/backup-$DATE"
else
echo "$(date): Backup FAILED!" >> "$LOG"
exit 1
fi
# 2. Ausführbar machen
sudo chmod +x /usr/local/bin/daily-backup.sh
# 3. Testen
sudo /usr/local/bin/daily-backup.sh
# 4. Cron einrichten
crontab -e
# Füge hinzu:
0 2 * * * /usr/local/bin/daily-backup.sh
Setup 2: Remote-Backup via SSH
# 1. SSH-Key für passwordless login
ssh-keygen -t ed25519 -f ~/.ssh/backup_key
ssh-copy-id -i ~/.ssh/backup_key user@backup-server
# 2. Backup-Script
#!/bin/bash
SOURCE="/home/data"
DEST="user@backup-server:/backups/$(hostname)"
rsync -avz --delete \
-e "ssh -i ~/.ssh/backup_key" \
"$SOURCE/" "$DEST/"
Setup 3: Cloud-Backup (Hetzner Storage Box)
# Hetzner Storage Box mounten
sudo apt install sshfs
# Mount-Point erstellen
sudo mkdir -p /mnt/storagebox
# Mounten
sshfs -o IdentityFile=~/.ssh/backup_key \
u123456@u123456.your-storagebox.de:/ \
/mnt/storagebox
# Backup
rsync -av --delete /home/data/ /mnt/storagebox/backups/
🧠 Backup-Strategien für verschiedene Szenarien
Strategie 1: Entwickler-Workstation
Tägliches Backup:
- Code → GitHub/GitLab (automatisch via git push)
- Dotfiles → Private Git Repo
- Dokumente → Rsync auf NAS (Cron, 2 Uhr)
Wöchentliches Backup:
- Komplettes Home → Externe Festplatte (am Wochenende)
Monatliches Backup:
- System-Snapshot → Cloud Storage (Hetzner)
Strategie 2: Web-Server (Production)
Stündlich:
- Datenbank-Dump → /var/backups/db/
Täglich:
- Datenbank → Remote Server (rsync)
- Web-Files → Remote Server (rsync)
- Logs → Archivieren + komprimieren
Wöchentlich:
- Komplettes System-Image → Cloud
- Test-Restore durchführen
Strategie 3: NAS (Familien-Daten)
Kontinuierlich:
- RAID 1 (zwei Disks gespiegelt)
Täglich:
- Snapshots behalten (7 Tage)
Wöchentlich:
- Externe USB-Festplatte (off-site mitnehmen)
Monatlich:
- Cloud-Backup (wichtige Daten)
🐛 Troubleshooting
Problem: Cron-Job läuft nicht
# 1. Ist Cron aktiv?
sudo systemctl status cron
# 2. Logs checken
grep CRON /var/log/syslog
# 3. Script manuell testen
/usr/local/bin/backup.sh
# 4. Pfade in Cron absolut?
# ❌ backup.sh
# ✅ /usr/local/bin/backup.sh
Problem: Rsync bricht ab
# Zu wenig Speicherplatz?
df -h
# Netzwerk-Probleme?
ping backup-server
# SSH-Key funktioniert?
ssh -i ~/.ssh/backup_key user@backup-server
# Verbose-Mode für Debugging
rsync -avvv /source/ /dest/
Problem: Backup ist zu langsam
# Kompression nutzen (Remote)
rsync -avz /source/ user@server:/dest/
# Nur geänderte Dateien
rsync -av --checksum /source/ /dest/
# Bandbreite limitieren
rsync -av --bwlimit=1000 /source/ /dest/
# ^^^^^^^^^^^^^ 1000 KB/s
📚 Weiterführende Konzepte
Snapshot-Backups mit Btrfs
# Btrfs-Snapshot erstellen (instant, kein Copy)
sudo btrfs subvolume snapshot /home /home-snapshot-$(date +%Y-%m-%d)
# Snapshots auflisten
sudo btrfs subvolume list /
# Snapshot löschen
sudo btrfs subvolume delete /home-snapshot-2025-12-01
Backup-Verschlüsselung
# Mit restic (modernes Backup-Tool)
restic init --repo /mnt/backup
restic backup /home/data --repo /mnt/backup
# Verschlüsselt automatisch, dedupliziert, inkrementell
Monitoring
# Einfaches Monitoring-Script
#!/bin/bash
BACKUP_DIR="/mnt/backup/latest"
MAX_AGE=86400 # 24 Stunden in Sekunden
if [ ! -d "$BACKUP_DIR" ]; then
echo "CRITICAL: Backup dir not found"
exit 2
fi
AGE=$(( $(date +%s) - $(stat -c %Y "$BACKUP_DIR") ))
if [ $AGE -gt $MAX_AGE ]; then
echo "WARNING: Backup older than 24h"
exit 1
else
echo "OK: Backup is fresh"
exit 0
fi
✅ Skill-Check
Bevor du zu Pfad 22 gehst:
- Ich kann die 3-2-1-Regel erklären
- Ich verstehe den Unterschied zwischen RAID 0, 1, 5
- Ich weiß: RAID ≠ Backup
- Ich kann einen Cron-Job schreiben
- Ich kann ein Rsync-Backup anlegen
- Ich habe ein Backup GETESTET (Restore)
- Ich habe Logs für meine Backups
- Ich weiß, was "off-site" bedeutet
Bonus-Aufgabe: Schreibe ein Backup-Script für deine wichtigsten Daten und richte einen Cron-Job ein. Teste das Restore!
🗺️ Navigation
Vorheriger Pfad: Pfad 20: Tanz am Kernel Nächster Pfad: Pfad 22: Hallo Nullfeld Zurück zur Übersicht: Admin-Vektor
Lizenz: CC BY-SA 4.0 (Dokumentation) + CKL v0.1 (bei Nutzung mit Kindern) Teil von: Crumbforest | OZM⟡NEXUS Ecosystem
🦉 "Ein Backup, das nicht getestet wurde, ist kein Backup - es ist Hoffnung."