Am Dienstag 16 Juni 2009 14:50:57 schrieb Falk Sauer:
Hi Al,
Am Dienstag 16 Juni 2009 12:29:28 schrieb Al Bogner:
Da hier die rsync-Spezialisten beisammen sind, hänge ich mich mit einem Problem an, das ich schon längere Zeit zu lösen versuche. Es geht vermutlich um "exclude".
Struktur der Quelle: /ebene/ebene2/ebene3/ebene4/ebene5/usw
Ich mache es für das Beispiel nicht ganz so komplex wie es ist.
In ebene4 befinden sich Dateien und weitere Unterverzeichnisse. Synchronisiert werden sollen einige Dateitypen, aber nicht alle, also zB txt, pdf und jpg. Nicht synchronisiert werden sollen die restlichen Dateitypen sowie Verzeichnisse in ebene4. Die Synchronisation soll die Struktur bis ebene4 enthalten und auch alle Verzeichnisse und Dateien bis ebene3 erhalten bleiben. Ich hoffe, ich habe mich gut genug ausgedrückt. Die Verzeichnisse bzw. Dateien, die synchronisiert werden sollen bzw. ausgeschlossen werden sollen, sehe ich als sehr aufwendig. Es geht dabei um 50000-100000 Dateien und tausende Verzeichnisse.
bau dir ein include file mit find zusammen, damit sollte das gehen.
ich hoffe ich hab dich soweit richtig verstanden ...
du suchst zuerst 3 ebenen tief nach allem
Ok, da ist gar nicht so viel drinnen. Wichtig ist aber, dass die _Verzeichnisstruktur_ erhalten bleibt. Im Ziel soll also nicht nur die Datei stehen, die synchronisiert wird, sonder auch der gesamte Pfad dazu. Hat ein Verzeichnis zwar Dateien, aber keine Dateien, die dem Muster entsprechen, soll das Verzeichnis nicht im Ziel angelegt werden.
find / -name "ebene?" --maxdepth 3 >includefile
Da ist schon die 1. Schwierigkeit. Ich hoffe ich verstehe dich richtig. Bei "ebene?" bedeutet das Fragezeichen ein beliebiges Zeichen nach Ebene als Wildcard? Die Verzeichnisse nennen sich nicht ebene+irgendwas. Das war nur beispielhaft. die 1. Ebene wäre der Mountpoint, zB /irgendwas die 2. Ebene hat aber einen ganz anderen Namen und da gibt es eine Reihe von Verzeichnissen darin, also zB /irgendwas/name /irgendwas/bezeichnung /irgendwas/nochwas Mit einer Wildcard sehe ich da keine Möglichkeit Genauso in der 3 und 4. Ebene, wobei in der 4. Ebene dann so richtig viele Dateien sind. Ein include-File das 100.000 Dateien angibt, hört sich für mich abenteuerlich an, aber ich kann es ja mal probieren, wenn geklärt ist, dass es kein Missverständnis gibt.
find /ebene/ebene2/ebene3/ebene4/ -name "*.txt" >>includefile find /ebene/ebene2/ebene3/ebene4/ -name "*.jpg" >>includefile usw. rsync -av include-from=includefile ...
untested!
Ich baue mir ein Testszenario, wenn ich denke, dass das synchronisiert wird was ich will. Danke Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org