Wie verhindere ich, dass Rsync versteckte Dateien unter Windows überspringt?

Melden
  1. Grundlegendes Verhalten von Rsync bei versteckten Dateien
  2. Verhindern, dass Rsync versteckte Dateien überspringt
  3. Zusammenfassung

Rsync ist ein sehr mächtiges Werkzeug zum Synchronisieren von Dateien und Verzeichnissen, das häufig auf Unix-artigen Systemen eingesetzt wird. Unter Windows kann Rsync beispielsweise mit Cygwin, WSL (Windows Subsystem for Linux) oder anderen Ports genutzt werden. Eine besondere Herausforderung stellt dabei das Handling versteckter Dateien dar, denn standardmäßig überspringt Rsync manche versteckte Dateien, insbesondere wenn sie mit einem führenden Punkt im Dateinamen beginnen (z.B. .git), oder wenn sie in Windows speziell als "versteckt" markiert sind.

Grundlegendes Verhalten von Rsync bei versteckten Dateien

Unter Unix-Systemen werden Dateien, deren Name mit einem Punkt beginnt, als versteckt behandelt. Rsync selbst hat keine eingebaute Logik, um explizit versteckte Dateien zu überspringen; vielmehr muss in der Befehlszeile oder mittels Filterregeln explizit angegeben werden, welche Dateien synchronisiert oder ignoriert werden sollen.

Unter Windows ist die Lage etwas komplexer: Dateien können sowohl mit einem führenden Punkt versteckt sein als auch über ein Attribut (Dateieigenschaft "versteckt") verfügen. Rsync allerdings bezieht sich traditionell hauptsächlich auf Dateinamen und nicht auf Dateiattribute, da die Windows-API für versteckte Attribute von den meisten Unix-Tools nicht standardmäßig ausgewertet wird. Somit kann es passieren, dass Dateien mit verstecktem Attribut manchmal nicht berücksichtigt, in anderen Fällen aber doch übertragen werden, je nach Rsync-Implementierung oder der Umgebung (Cygwin, WSL, native Ports).

Verhindern, dass Rsync versteckte Dateien überspringt

Um sicherzustellen, dass Rsync unter Windows auch versteckte Dateien synchronisiert, gibt es mehrere wichtige Punkte zu beachten. Zunächst sollte überprüft werden, ob in den Rsync-Optionen --exclude- oder --filter-Regeln gesetzt sind, die versteckte Dateien (z.B. .*/ für alle von Punkt beginnenden Dateien) von der Übertragung ausschließen. Wenn solche Regeln gesetzt sind, müssen sie entfernt oder angepasst werden, damit versteckte Dateien mitübertragen werden.

Weiterhin ist es hilfreich, Rsync mit Optionen wie -a (archive mode) oder -r (rekursiv) zu starten, damit alle Dateien in den Verzeichnissen mitgenommen werden. Standardmäßig schließt dies auch Dateien mit führenden Punkten nicht aus.

Da Windows versteckte Attribute nicht standardmäßig von Rsync ausgelesen werden, wird eine weitere Maßnahme empfohlen: Um ganz sicherzugehen, dass alle Dateien mit dem versteckt-Attribut übertragen werden, kann man vor dem Synchronisieren die Attribute der betreffenden Dateien entfernen oder ändern, beispielsweise mit dem Windows-Befehl attrib -h filename. Dies stellt sicher, dass Rsync alle Dateien ohne Einschränkung lesen und übertragen kann.

Alternativ kann man Rsync unter Windows in einer Linux-ähnlichen Umgebung wie WSL einsetzen, wo Dateien mit führendem Punkt als versteckt gelten, und hier keine Windows-Attribute eine Rolle spielen. In diesem Fall überspringt Rsync keine versteckten Dateien, solange keine --exclude-Optionen gesetzt werden.

Zusammenfassung

Rsync selbst überspringt versteckte Dateien nicht grundlegend, sondern das Überspringen passiert meist durch gesetzte Filterregeln oder unterschiedliche Behandlung von Windows-spezifischen versteckten Attributen. Damit Rsync unter Windows versteckte Dateien nicht überspringt, sollten sämtliche --exclude-Filter entfernt oder angepasst werden. Außerdem empfiehlt es sich, die Attribute "versteckt" vor der Nutzung zu entfernen oder WSL zu verwenden, um eine einheitliche Unix-ähnliche Dateibasis zu haben. Auf diese Weise kann sichergestellt werden, dass alle Dateien – auch versteckte – zuverlässig synchronisiert werden.

0

Kommentare