2016-05-12 6 views
1

Ich muss einige Verzeichnisse von einer Maschine rsync, sondern nur einen Teil der Struktur. Ich denke, der einfachste Weg, es zu erklären wäre, auf dem Server, tree -f (die den vollständigen Pfad jeder Datei druckt) zu laufen, und dann grep ' in den vollständigen Pfad und rsynch' nur die Übereinstimmungen von grep. Eigentlich würde ich es gerne so machen, aber ich habe keinen Shell-Zugang zum Server, nur rsync. Zwei-Schritt-Lösung basierend auf grep Ausgabe von rsync --list-only ist völlig akzeptabel.Wie Verzeichnisse mit rsync richtig übereinstimmen

Es ist tatsächlich einfacher, weil ich weiß auch, dass diese monnur als Suffix zu einem Verzeichnis erscheint (die Hierarchie ziemlich starr ist), so habe ich versucht zu tun

rsync --dry-run -vrlpt --include='*/' --include='**/*mon/' --exclude='*' --prune-empty-dirs

aber, dass hat nichts gefunden. Dito für --include='*mon/' statt der mit dem Doppelstern. Die Vermeidung der --prune-empty-dirs entsprach allen Verzeichnissen, aber keine Dateien, was meiner Meinung nach mein Problem ist. Also habe ich versucht, ein Include-Muster für einige Dateierweiterungen direkt vor dem Ausschlussmuster hinzuzufügen (was ich lieber nicht tun würde, weil ich nicht alle verfolgen möchte und sie sich ändern könnten), aber das entsprach einfach all diesen Dateien, einschließlich der nicht in den "mon" -Bäumen.

Und ja, ich habe this und this und this und unzählige andere, die mir geholfen, einige Fortschritte zu machen (also das, was Sie oben sehen können), aber das Problem nicht lösen ...

Antwort

0

So etwas wie die folgenden macht den Job (dh das Problem war die Abstimmung von was auch immer nach mon ist) in der zweiten sind:

rsync -arvm --include='*/' --include='*mon/***' --exclude='*' /path/to/source /path/to/dest

Verwandte Themen