# mac-home Synchronisierungs-Toolset Drei hilfreiche Werkzeuge um deine Dotfiles (`~/.zshrc`, `~/.gitconfig`, etc.) zwischen deinem Home-Directory und diesem Repository zu synchronisieren. ## 📩 Dateien | Datei | GrĂ¶ĂŸe | Zweck | |-------|-------|-------| | **`sync-home-content.sh`** | 17 KB | Hauptscript mit 6 Synchronisierungs-Modi | | **`SYNC-STRATEGY.md`** | 10 KB | AusfĂŒhrliche Dokumentation & Best Practices | | **`QUICK-START.sh`** | 6 KB | Quick-Start Guide (diesen hier lesen!) | --- ## 🚀 Schnellstart ```bash cd ~/mac-home # 1. Status anschauen ./sync-home-content.sh status # 2. Mit --dry-run testen (KEINE Änderungen) ./sync-home-content.sh sync --dry-run # 3. Echte Synchronisierung ./sync-home-content.sh sync ``` --- ## 🎯 Die 6 Modi ### 1. **STATUS** — Nur Information Zeigt welche Dateien geĂ€ndert wurden (ohne zu Ă€ndern). ```bash ./sync-home-content.sh status ``` ### 2. **PUSH** — Repo → Home Kopiert vom Repository ins lokale Home-Directory. **Nutze wenn:** Git-Update vorhanden. ```bash ./sync-home-content.sh push ``` ### 3. **PULL** — Home → Repo Kopiert vom Home-Directory ins Repository. **Nutze wenn:** Lokal Dateien bearbeitet. ```bash ./sync-home-content.sh pull ``` ### 4. **SYNC** — Bidirektional Intelligente 2-Wege Synchronisierung. **Nutze wenn:** Du unsicher bist, was verĂ€ndert wurde. ```bash ./sync-home-content.sh sync ``` ### 5. **CLEANUP** — Alte Backups löschen Entfernt Backups Ă€lter als 30 Tage. ```bash ./sync-home-content.sh cleanup ``` ### 6. **LIST** — Verwaltete Dateien Zeigt alle Dateien, die versioniert sind. ```bash ./sync-home-content.sh list ``` --- ## đŸ›Ąïž Sicherheitsfeatures ✅ **Backups:** Vor jeder Änderung wird ein Backup erstellt (`.sync-backups/`) ✅ **Dry-Run:** Mit `--dry-run` testen ohne zu Ă€ndern ✅ **Checksummen:** Content-basierter Vergleich (md5sum, nicht Timestamp) ✅ **Logs:** Alles protokolliert in `.sync-home-content.log` ✅ **Smart Conflict-Handling:** Neuere Version gewinnt automatisch (oder interaktiv) --- ## 💡 Typische Workflows ### Scenario 1: Lokal `.zshrc` bearbeitet ```bash ./sync-home-content.sh status # "≠ geĂ€ndert im Home: .zshrc" ./sync-home-content.sh pull --dry-run # Test ./sync-home-content.sh pull # Sync ins Repo git -C home-content commit -am "Update .zshrc" git -C home-content push ``` ### Scenario 2: Git-Pull → Home updaten ```bash git pull # Repository updaten ./sync-home-content.sh push --dry-run # Test ./sync-home-content.sh push # Sync ins Home source ~/.zshrc # (bei .zshrc reload) ``` ### Scenario 3: "Weiß nicht was los ist" ```bash ./sync-home-content.sh sync --dry-run -v # AusfĂŒhrlich sehen ./sync-home-content.sh sync # Bi-direktional sync ``` --- ## 📋 Optionen | Flag | Effekt | Beispiel | |------|--------|---------| | `-d, --dry-run` | Zeige nur, ohne zu Ă€ndern | `./sync status --dry-run` | | `-v, --verbose` | Detaillierter Output | `./sync status -v` | | `-i, --interactive` | Frage bei Konflikten | `./sync sync --interactive` | | `--no-backup` | Keine Backups erstellen | `./sync push --no-backup` | | `-h, --help` | Zeige Hilfe | `./sync -h` | --- ## 📚 Dokumentation - **Quick-Start:** `./QUICK-START.sh` (ausgeben) - **Detaillierte Docs:** Lies `SYNC-STRATEGY.md` - **Logs:** `cat .sync-home-content.log` --- ## 🆘 Fehlerbehandlung ### Backup versehentlich gelöscht? ```bash # Schaue in .sync-backups nach ls -lh .sync-backups/ # Restore cp .sync-backups/.gitconfig.20260928_150000.backup home-content/.gitconfig ``` ### Falsche Synchronisierung? ```bash # Checksum-Mismatch? Das sind die gĂŒltigen EintrĂ€ge: cd home-content && git ls-files ``` ### Script zu langsam? - Normal fĂŒr ~14 Dateien < 1 Sek (md5sum overhead minimal) - Bei vielen Dateien: `seq-Verarbeitung` ist bewusst, nicht parallelisierbar --- ## ⚙ Erweiterte Nutzung ### Alias fĂŒr schnellen Zugriff ```bash # In ~/.zshrc hinzufĂŒgen: alias synchome="~/mac-home/sync-home-content.sh" alias synchome-status="~/mac-home/sync-home-content.sh status" alias synchome-pull="~/mac-home/sync-home-content.sh pull --dry-run && ~/mac-home/sync-home-content.sh pull" ``` ### Cron-Job fĂŒr regelmĂ€ĂŸigen Sync ```bash # Alle 2 Stunden 0 */2 * * * cd ~/mac-home && ./sync-home-content.sh sync >> /tmp/sync-home.log 2>&1 ``` --- ## 🔍 Strategie: Inhalt vs. Timestamp? Das Script nutzt **md5sum fĂŒr Erkennung** + **Timestamp fĂŒr Konflikt-Auflösung**: | Aspekt | Methode | Grund | |--------|---------|-------| | Änderung erkennen | md5sum (Content) | ZuverlĂ€ssig, Zeitzone-unabhĂ€ngig | | Konflikt lösen | Timestamp (mtime) | Welche Version ist neuerer? | | Nur in Repo? | git ls-files | Tracking nur versionierter Dateien | --- ## ✅ Best Practices **IMMER TUN:** - ✓ Vor kritischen Änderungen `status` checken - ✓ Mit `--dry-run` testen bevor echte Sync - ✓ Logs regelmĂ€ĂŸig prĂŒfen: `tail .sync-home-content.log` - ✓ Alte Backups mit `cleanup` entfernen (monatlich) **NICHT TUN:** - ✗ `--no-backup` ohne wichtigen Grund nutzen - ✗ `push` als Standard-Modus (zu aggressiv) - ✗ Mehrere Sync-Prozesse parallel laufen lassen - ✗ `.sync-backups/` von Hand löschen --- ## 📖 Weitere Ressourcen - Detaillierte ErklĂ€rung der Modi: `SYNC-STRATEGY.md` (5 min Lesedauer) - Troubleshooting: `SYNC-STRATEGY.md` → Abschnitt "Troubleshooting" - Change-Management Strategie: `SYNC-STRATEGY.md` → Abschnitt "Change-Management" --- ## đŸ€– Was das Script tut 1. Liest alle in `git ls-files` registrierten Dateien 2. Vergleicht deren Checksum zwischen Repo und Home 3. Erstellt automatisch Backups bei Änderungen 4. Synchronisiert basierend auf gewĂ€hltem Modus 5. Protokolliert alles in `.sync-home-content.log` 6. Entfernt alte Backups (> 30 Tage mit `cleanup`) --- ## 💬 Fragen? Lesen Sie `SYNC-STRATEGY.md` - fast alle Fragen sind dort beantwortet! --- **Viel Erfolg beim Synchronisieren! 🎉**