Wie synchronisiere ich Dateien mit langen Pfadnamen unter Windows mit Rsync?

Melden
  1. Hintergrund zu langen Pfadnamen unter Windows
  2. Methoden zum Umgang mit langen Pfaden
  3. Aktivieren der Unterstützung für lange Pfade in Windows
  4. Verwendung von UNC-Pfaden zur Umgehung des Limits
  5. Verwendung von Rsync in einer Linux-ähnlichen Umgebung unter Windows
  6. Pfadverkürzung und Workarounds
  7. Zusammenfassung der Vorgehensweise

Das Synchronisieren von Dateien unter Windows mit Rsync gestaltet sich in der Regel einfach, jedoch treten Probleme auf, wenn die Pfadlängen der Dateien das von Windows standardmäßig erlaubte Limit von 260 Zeichen überschreiten. Diese Limitierung, auch bekannt als MAX_PATH, erschwert die Handhabung von Dateien in tief verschachtelten Verzeichnissen oder mit sehr langen Namen. Nachfolgend wird erläutert, wie man mit diesem Problem umgehen kann und dennoch eine zuverlässige Synchronisation mit Rsync erreicht.

Hintergrund zu langen Pfadnamen unter Windows

Seit Windows 10 Version 1607 wurde das Limit von 260 Zeichen für Pfadnamen grundsätzlich aufgehoben, sofern bestimmte Einstellungen vorgenommen wurden. Standardmäßig verwenden viele Programme und auch das Betriebssystem diese Grenze allerdings noch, was bei Programmen wie Rsync zu Fehlern führen kann, wenn lange Pfade vorkommen. Rsync selbst wurde ursprünglich unter Unix/Linux entwickelt und akzeptiert daher lange Pfadnamen grundsätzlich, die Windows-eigene Pfadbeschränkung kann dennoch zu Problemen führen.

Methoden zum Umgang mit langen Pfaden

Um Rsync unter Windows mit langen Pfaden erfolgreich zu verwenden, gibt es mehrere Ansätze, die berücksichtigt werden sollten.

Aktivieren der Unterstützung für lange Pfade in Windows

Um die Unterstützung für Pfade über 260 Zeichen zu ermöglichen, kann man die Gruppenrichtlinieneinstellung oder die Registry anpassen. Dazu öffnet man den Gruppenrichtlinien-Editor (gpedit.msc), navigiert zu > Lokale Computerpolicy → Computerkonfiguration → Administrative Vorlagen → System → Dateisystem → Lange Win32-Pfade aktivieren” und aktiviert diese Option. Alternativ kann in der Registry unter folgendem Pfad der DWORD-Wert LongPathsEnabled auf 1 gesetzt werden:

Dadurch wird die Unterstützung für lange Pfade systemweit aktiviert, sofern Anwendungen diese Funktion unterstützen.

Verwendung von UNC-Pfaden zur Umgehung des Limits

Windows unterstützt spezielle Pfadangaben mit dem Präfix \\?\, welche die Beschränkung aufhebt. Das heißt, wenn Pfade als \\?\C:\Pfad\zur\Datei angegeben werden, behandelt Windows sie als erweiterte Pfade ohne die 260-Zeichen-Grenze. Leider unterstützt Rsync unter Windows diesen Syntax meist nicht direkt, da Rsync relativ einfache Pfadangaben erwartet. Man kann versuchen, Rsync über Bash unter Cygwin, MinGW, MSYS2 oder WSL (Windows Subsystem for Linux) auszuführen, wodurch komplexere Pfadlängen besser gehandhabt werden.

Verwendung von Rsync in einer Linux-ähnlichen Umgebung unter Windows

Eine praktische Lösung ist es, Rsync im Windows Subsystem for Linux (WSL) zu verwenden. In WSL gibt es keine Pfadbeschränkungen wie unter Windows, da es sich um einen Linux-kompatiblen Kernel handelt. Hierbei mountet WSL das Windows-Dateisystem unter /mnt/c z.B., und Rsync kann Dateien mit langen Pfaden problemlos verarbeiten. Dies erfordert jedoch, dass WSL installiert und konfiguriert wird und Rsync innerhalb der Linux-Distribution installiert ist. Die Befehle zum Synchronisieren erfolgen dann ganz normal im WSL-Terminal.

Pfadverkürzung und Workarounds

Wenn keine der vorher genannten Optionen möglich ist, kann man versuchen, die Pfadlängen durch Umbenennung oder Verschieben des Quell- oder Zielverzeichnisses näher zur Laufwerkswurzel zu reduzieren. Dadurch werden Pfadnamen insgesamt kürzer und das Limit kann umgangen werden. Ein weiterer Ansatz ist die Verwendung von Tools, die Pfade automatisch verkürzen oder temporär Netzlaufwerke für bestimmte Pfade zuordnen, sodass Pfade kürzer erscheinen (z.B. mit net use).

Zusammenfassung der Vorgehensweise

Für das zuverlässige Synchronisieren von Dateien mit langen Pfadnamen unter Windows mit Rsync sollte zunächst die Unterstützung für lange Pfade im System aktiviert werden. Falls das allein nicht ausreicht, ist die Nutzung von Rsync innerhalb einer Linux-ähnlichen Umgebung wie WSL der beste Weg, da hier keine Windows-typische Pfadlimitierung existiert. Alternativ kann man mittels kurzer Pfade, Netzlaufwerken oder geeigneten Tools die Pfadlänge reduzieren. Die Nutzung von UNC-Pfaden ist theoretisch möglich, wird von Rsync jedoch selten direkt unterstützt.

Auf diese Weise lässt sich Rsync unter Windows auch bei sehr langen Pfadnamen stabil und zuverlässig einsetzen.

0

Kommentare