Files
OZM-Keks-Handbuch-v1/crumbpage-21-backup-raid-cron.md
Krümel Branko 8a24388d29 Add Pfad 21-23 (Backup, Nullfeld, AI/Philosophie) - Complete the 23-path journey
**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>
2025-12-13 20:59:02 +01:00

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."