devAlice
← Multi-OS

Dateisynchronisierung — P2P Mac ↔ Windows Ordner mit Syncthing

Echtzeit-Ordnersynchronisierung zwischen zwei Rechnern ohne Cloud. Dotfiles / Notizen / Projekte überall identisch halten.

Wer Mac und Windows gleichzeitig nutzt, fragt sich irgendwann: „Diese Datei, die ich heute erstellt habe — wie bekomme ich sie auf den anderen Rechner?" USB, Dropbox, iCloud, OneDrive, Git, SCP — jede Methode hat klare Schwächen. Cloud hat Größenlimits und Datenschutzbedenken; Git ist ungeeignet für Binärdateien und Zwischenergebnisse; SCP bietet keine Automatisierung.

Syncthing löst das: P2P + Open Source + kostenlos. Zwei Rechner synchronisieren direkt ohne zentralen Server. Fällt auf LAN zurück, wenn das Internet nicht erreichbar ist. Diese Anleitung deckt die Einrichtung unter Mac + Windows 11 und praktische Sync-Muster ab.

TL;DR

  1. Syncthing auf beiden installieren — brew auf Mac, winget auf Windows
  2. Geräte-IDs austauschen — einmalige Registrierung
  3. Ordner freigeben — eine Seite bietet an, die andere akzeptiert
  4. .stignore zum Ausschließen von Abhängigkeiten / Geheimnissen — niemals node_modules oder .env synchronisieren

Voraussetzungen

  • Mac: macOS 12+ (Homebrew installiert) — Mac-Ersteinrichtung
  • Windows: Windows 10/11 (winget verfügbar) — Windows-Ersteinrichtung
  • Am schnellsten, wenn beide im selben LAN sind (funktioniert auch über das Internet)
  • Beide Rechner müssen eingeschaltet sein (ein schlafender Rechner synchronisiert beim Aufwachen)

1. Warum Syncthing — Alternativen im Vergleich

ToolModellGrößenlimitDatenspeicherortKostenFazit
Syncthing (Wahl)P2P, OSSNur FestplatteEigene RechnerKostenlosM0–M2 empfohlen
iCloud DriveCloud5GB kostenlos / 200GB+ kostenpflichtigApple$/MonatMac-first, Win-Client eingeschränkt
OneDriveCloud5GB kostenlos / 100GB+ kostenpflichtigMS$/MonatWin-freundlich, Mac funktioniert
DropboxCloud2GB kostenlos / 2TB kostenpflichtigDropbox$/MonatWinziges Free-Tier
Resilio SyncP2P, geschlossenUnbegrenztEigene Rechner$/Monat (Pro)Kostenpflichtiges Superset
GitVersionskontrolleRepo-LimitsGitHub etc.KostenlosSchlecht für große Binärdateien/Zwischenergebnisse
rsync (manuell)SyncUnbegrenztEigene RechnerKostenlosKeine Automatisierung

Syncthing-Stärken: Keine Größenlimits, Daten nur auf eigener Festplatte (Datenschutz), kostenlos, gleichwertige Clients auf beiden OSes.

Schwächen: Beide Rechner müssen gleichzeitig laufen (nicht als Backup geeignet), Konflikte werden manuell gelöst, GUI ist schlicht (browserbasiert).

2. Installation

Mac

brew install --cask syncthing
# Oder als Hintergrunddienst (automatischer Start bei Anmeldung)
brew services start syncthing

GUI: http://127.0.0.1:8384 — Admin-UI im Browser.

Windows 11

# winget (kein Admin erforderlich)
winget install -e --id Syncthing.Syncthing

Oder Syncthing Windows Setup Installer (mit Tray-Symbol + automatischer Start).

Nach der Installation → Rechtsklick auf das Tray-Symbol → „Open", um die GUI zu starten (http://127.0.0.1:8384).

Mac öffnet die GUI automatisch; Windows öffnet sie über das Tray. Beide verwenden dieselbe Web-UI.

3. Erstmalige Kopplung — Zwei Rechner verbinden

3.1 Geräte-IDs abrufen

In der Syncthing-UI jedes Rechners:

  1. Oben rechts ActionsShow ID
  2. Den langen String kopieren (XXXXXXX-XXXXXXX-...)

3.2 Windows auf dem Mac hinzufügen

  1. Mac Syncthing-UI → Add Remote Device (unten rechts)
  2. Device ID: Windows-ID einfügen
  3. Device Name: Win11-Desktop (eigene Wahl)
  4. Speichern

3.3 Auf Windows akzeptieren

Kurz darauf zeigt Windows eine Benachrichtigung: Device <Mac ID> wants to connectAdd Device → Name MacBook-Pro → Speichern.

Beide UIs zeigen sich nun gegenseitig als Connected (grün).

Im selben LAN verbindet in 5s. Über das Internet 1–2 min (nach Discovery + Relay).

4. Erster freigegebener Ordner

4.1 Mac → Windows Richtung

Mac-UI:

  1. Add Folder
  2. Folder Label: notes (eigene Wahl)
  3. Folder ID: notes-mac-win (eindeutig, muss auf beiden übereinstimmen)
  4. Folder Path: /Users/{ich}/Documents/notes
  5. Sharing-Tab → Win11-Desktop ankreuzen
  6. Speichern

4.2 Auf Windows akzeptieren + Pfad wählen

Windows-UI-Benachrichtigung: „MacBook-Pro wants to share folder 'notes-mac-win'"Add

  1. Folder Path: C:\Users\{ich}\Documents\notes (gleiche Struktur wie Mac hilft)
  2. Speichern

4.3 Ergebnis

Warten, bis beide Ordner Up to Date (grün) anzeigen. Der erste Durchlauf kopiert alles initial über, daher dauert er proportional zur Gesamtgröße. Danach werden Änderungen schnell übertragen (normalerweise innerhalb von 5 s).

5. .stignore — Was NICHT synchronisiert werden soll

Der häufigste Fehler ist das Synchronisieren von node_modules / .git / .env. Abhängigkeiten sollten pro Rechner neu installiert werden; Git-Ordner können beim Sync korrumpieren; .env ist vertraulich. Alle ausschließen.

5.1 Vorlage herunterladen

Für Entwicklungsordner:

.stignore
# Mac/Linux
curl -fsSL https://devalice.jaceclub.com/assets/multi-os/file-sync/stignore-dev.txt -o /path/to/folder/.stignore
shasum -a 256 /path/to/folder/.stignore
# Expected: f003177e7026492848825e42c4b4845d1c68f787b923ce44854cb47e9c859827
# Windows PowerShell
Invoke-WebRequest -Uri https://devalice.jaceclub.com/assets/multi-os/file-sync/stignore-dev.txt -OutFile C:\path\to\folder\.stignore
Get-FileHash C:\path\to\folder\.stignore -Algorithm SHA256

5.2 Anwenden

  1. .stignore in den Sync-Ordner-Stamm legen
  2. Syncthing-UI → dieser Ordner → EditIgnore Patterns-Tab → Use .stignore aktivieren
  3. Rescan auslösen → ausgeschlossene Dateien werden sofort ignoriert

5.3 Kritische Ausschlüsse

MusterWarum
node_modules, .venv, targetAbhängigkeiten — pro Rechner erstellt
.gitBeschädigungsrisiko + Git dafür verwenden
dist, build, .nextBuild-Ausgaben — reproduzierbar
.env, .env.local, *.pem, id_*Geheimnisse — niemals synchronisieren
.DS_Store, Thumbs.dbOS-Metadaten
*.log, tmpLogs / temporär

6. Praktische Muster

6.1 Dotfiles-Sync

Nicht das gesamte Home-Verzeichnis synchronisieren (Sicherheitsrisiko durch Geheimnisse). In einem ~/dotfiles/-Ordner bündeln und per Symlink einbinden.

~/dotfiles/
├── .gitconfig
├── .zshrc
├── .vimrc
└── .tmux.conf
# Mac/Linux
ln -s ~/dotfiles/.zshrc ~/.zshrc
ln -s ~/dotfiles/.gitconfig ~/.gitconfig
# Windows — PowerShell-Profil liegt woanders
ln -s C:\Users\me\dotfiles\Microsoft.PowerShell_profile.ps1 $PROFILE

~/dotfiles/ über Syncthing freigeben. OS-spezifische Verzweigung über Unterordner (dotfiles/common, dotfiles/mac, dotfiles/windows).

6.2 Notizen-Sync

Den Obsidian- / Logseq-Vault-Ordner freigeben. Weniger Konflikte als bei iCloud / OneDrive (Syncthing-Konflikte pro Datei, nicht pro Zeile — dennoch bei gleichzeitiger Bearbeitung Vorsicht).

6.3 Projekt-Quellcode-Sync (mit Vorbehalt)

Regel: Git bevorzugen, wenn möglich. Syncthing nur für Beiläufiges, das lokalen Sync benötigt (Entwürfe, umgebungsspezifische Konfigurationen, Experimentnotizen) verwenden.

Wenn der Quellordner synchronisiert werden muss, immer .git in .stignore aufnehmen. Ein Sync mitten in Git-internen Schreibvorgängen riskiert Reflog- / Index-Korruption.

6.4 Send Only / Receive Only

Ordnertypen (Ordner → Edit → Folder Type):

  • Send & Receive (Standard) — bidirektional
  • Send Only — dieser Rechner ist Master. Änderungen der anderen Seite werden ignoriert und abgelehnt
  • Receive Only — nur empfangen. Lokale Änderungen werden nicht übertragen

Backup-empfangende Rechner auf Receive Only setzen, verhindert versehentliche bidirektionale Überschreibungen. Für echte Backups jedoch dedizierte Tools verwenden (restic, Time Machine).

7. Konfliktbehandlung

Wenn beide Seiten dieselbe Datei gleichzeitig bearbeiten, legt Syncthing automatisch eine Konfliktdatei an:

  • foo.md (zuletzt verwendete Version)
  • foo.sync-conflict-20260512-153012-DEVICE.md (die andere Version)

Vorgehensweise

  1. Beide öffnen und vergleichen (VS Code „Compare with Active" oder diff foo.md foo.sync-conflict-*.md)
  2. Inhalt in foo.md zusammenführen
  3. Die sync-conflict-Datei löschen

Häufige Konflikte deuten auf gleichzeitige Bearbeitung im selben Ordner hin. Für Notizen rechnergetrennte Unterordner verwenden (notes/mac/, notes/win/), um dies zu vermeiden.

8. Sicherheit

Geräteauthentifizierung

  • Geräte-ID ist ein öffentlicher Schlüssel-Hash (TLS). Keine Imitation möglich
  • Neue Geräteanfragen erfordern explizite Genehmigung auf beiden Seiten

Datenübertragung

  • Gesamter Datenverkehr TLS 1.2+
  • Direkt im LAN; über öffentlichen Relay im Internet — Relay leitet nur Ciphertext weiter

Empfohlene Einstellungen

UI → Settings → GUI Authentication:

  • GUI Username + GUI Password setzen (besonders für Laptops in externen Netzwerken)
  • Ohne dies kann jeder im selben LAN auf http://your-ip:8384 zugreifen

UI → Settings → Connections:

  • Listen Address: Standard
  • NAT Traversal ✅ (automatisches Hole-Punching)

.stignore für Geheimnisse

  • Immer .env, *.pem, id_*, .aws/credentials ausschließen
  • Die stignore-dev.txt dieser Anleitung tut dies bereits

Überprüfung

Auf beiden Rechnern prüfen:

  1. notes/test.md auf Mac erstellen → erscheint auf Windows innerhalb von 10s
  2. notes/test.md auf Windows bearbeiten → spiegelt sich auf Mac innerhalb von 10s
  3. notes/test.md auf Mac löschen → verschwindet auf Windows innerhalb von 10s
  4. Auf beiden gleichzeitig bearbeiten → sync-conflict-...-Datei erscheint (gem. §7 behandeln)
  5. node_modules / .env usw. auf einer Seite erstellt → erreicht die andere nicht

Fehlerbehebung

Zwei Rechner können sich nicht sehen

  • Gleiches LAN? (über Internet bis zu 5 Minuten warten)
  • Firewall erlaubt Syncthing-Port 22000
  • Mac: Systemeinstellungen → Netzwerk → Firewall aus, oder Syncthing erlauben
  • Windows: PowerShell Get-NetFirewallApplicationFilter | ? { $_.Program -match 'syncthing' }

Sync ist langsam

  • Große Ordner (Zehntausende Dateien) — erster Scan dauert lange. Ordner → Edit → Rescan Interval erhöhen
  • Über Internet durch Relay → langsam. Gleiches LAN bevorzugen
  • Festplatten-I/O-Engpass — SSD empfohlen

„Out of sync" bleibt bestehen

  • Ordner → Override Changes (in Send & Receive) — diesen Rechner als Master erzwingen
  • Oder Revert Local Changes (Receive-Modus)
  • Beides kann Daten verlieren; vorher sichern

.stignore hat keine Wirkung

  • Use .stignore in Ordner → Edit → Ignore Patterns bestätigen
  • .stignore liegt am Ordner-Stamm (kein Unterordner)
  • Rescan auslösen (Ordner → ⋮ → Rescan)

Windows-Tray-Symbol fehlt

  • winget install startet möglicherweise nicht automatisch
  • Der Syncthing Windows Setup Installer fügt Tray + Auto-Start hinzu
  • Oder syncthing.exe --no-console --no-browser bei der Anmeldung über Aufgabenplanung ausführen

Geheimnis versehentlich synchronisiert

  1. Datei sofort auf beiden Rechnern löschen
  2. Syncthing kann in den Papierkorb verschieben (Ordner → Dateiversionierung)
  3. Das Geheimnis selbst rotieren (API-Schlüssel usw.) — davon ausgehen, dass der andere Rechner es berührt hat
  4. Muster zu .stignore hinzufügen, um Wiederholung zu verhindern

Referenzen

Changelog

  • 2026-05-12: Erster Entwurf. Alternativen + Einrichtung (Mac+Win) + fünf Muster + Konfliktbehandlung + sechs Fehlerbehebungsfälle + .stignore-Vorlagen-Asset