Leider beherrscht der Finder unter Mac OS X die Funktion “Ordner zusammenführen” (im Fachjargon “merge” gennant) nicht. Der Finder basiert rein auf Copy-, Cut- & Paste (Kopieren, Ausschneiden, Einfügen).
Dennoch gibt es eine bequeme Variante, einen Ordner mit seiner gesamten Struktur (Unterordner & Dateien) zu “mergen” – und zwar über das Terminal.app mit dem Befehl rsync
.
“rsync” ist grundsätzlich einfach eine Erweiterung des “cp” bzw. “rcp” Befehls (cp = copy, zu Deutsch “kopieren”).
Beispiel: ich habe zwei Ordner, und möchte den kompletten Inhalt des Ordners “source” in den Zielordner “target” übertragen – dabei sollen aber Dateien von gleicher Grösse und gleichem Zeitstempel nicht ersetzt werden. Dazu verwende ich den folgenden Befehl im Terminal.app:
rsync -arv --exclude=.* /Pfad/zum/Source/Ordner/ /Pfad/zum/Target/Ordner/
-arv
: Eine zusammengefasste Schreibweise für die einzelnen Optionen -a -r -v-a
: Kopiert die Objekte mit ziemlich allen Informationen (Erstellungsdatum, Änderungsdatum, Zugriffsrechte, etc.)-r
: Kopiert das Hauptverzeichnis rekursiv (alle Unterordner und deren Dateien werden berücksichtigt)-v
: Zeigt im Terminal-Fenster alle Meldungen an--exclude=.*
: Dateien, welche mit einem . beginnen (z.B. “.DS_STORE”), sollen NICHT berücksichtigt werden
Ein nettes Feature dieses Befehls ist, dass man auch gewisse Dateien oder ganze Ordner vom Zusammenführungs-Prozess ausklammern kann (wie oben bereits mit “exclude=” angedeutet).
rsync -arv --exclude=.* --exclude=*.jpg --include=test.jpg /Pfad/zum/Source/Ordner/ /Pfad/zum/Target/Ordner/
Mit obigem Beispiel werden nebst Dateien die mit einem . beginnen (.DS_STORE) auch alle Bilddateien mit der Endung .jpg nicht berücksichtigt. Allerdings wird eine spezifische Bilddatei, “test.jpg”, berücksichtigt!
Man kann also bei den Befehlen --include
und --exclude
mit sogenannten Wildcards-Arbeiten (Zeichen, die stellvertretend für anderen Zahlen/Buchstaben/Zeichen stehen). Dazu gehören auch + und ?.
Eine detaillierte Dokumentation über den Befehl “rsync” erhält man, wenn man im Terminal-Fenster “info rsync” eingibt.
nice! rsync kannte ich zwar schon, wusste aber nicht, dass es neben “man” auch “info” gibt!
There is an updated version of this blog post available – and it’s translated to English now:
→ How to merge two folders in macOS using rsync in Terminal.app