rsync --include-from funktioniert nicht

rsync --include-from funktioniert nicht

Die Manpages enthalten keine Beispiele dafür. Ich habe Schwierigkeiten, rsync anzuweisen, nur einige Dateien einzuschließen, bei denen es sich um solche Dateien handelt. Ich verstehe nicht, warum man ausschließen muss, um einzuschließen, warum man rsynceinfach nicht einschließt, was auch immer in der Include-Datei steht, und dass alles andere ausgeschlossen wird.

Dies ist mein Skript:

rsync -ruv --rsh=ssh --include-from=zz-rsync-test.prod.incl /usr2/subdir remoteSrv:/tmp/.

und das ist meine Include-Datei, die nicht funktioniert: Sie kopiert zu viel: Sie kopiert alles im Unterverzeichnis /usr2/ (einschließlich des subdirVerzeichnisses, komisch), was ich nicht will. Ich will nur die Dateien per, 42f und xml im Verzeichnis kopieren data/text_forms.

+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*

und das folgende funktioniert nicht, es kopiert nichts:

- *
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*

und folgendes funktioniert auch nicht, es kopiert nichts:

- *
+ data/
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*

und folgendes funktioniert auch nicht, es kopiert nichts:

- *
+ data/
+ data/text_forms/
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*

Folgendes funktioniert auch nicht:

+ */
+ /data/text_forms/*.per
+ /data/text_forms/*.42f
+ /data/text_forms/*.xml
+ /data/text_forms/*.xml.*
- *

Das Folgende funktioniert nicht:

+ /data/
+ /data/text_forms/
+ /data/text_forms/*.per
+ /data/text_forms/*.42f
+ /data/text_forms/*.xml
+ /data/text_forms/*.xml.*
- *

Antwort1

Ich habe die Lösung gefunden. Ich habe zwei volle Tage gebraucht, um sie zu finden. Ich hoffe, dies hilft Ihnen, nicht so viel Zeit zu verschwenden.

Das erste Problem bestand darin, dass das Unterverzeichnis subdirin /usr2/subdireingeschlossen war und ich nicht wollte, dass das ganze Verzeichnis eingeschlossen wird. Ich wollte nur, dass es das Basisverzeichnis ist. Deshalb ist am Ende ein Schrägstrich erforderlich, wie in /usr2/subdir/. Mein neuer Befehl sieht also folgendermaßen aus:

rsync -ruvv --rsh=ssh --include-from=zz-rsync-test.prod.incl /usr2/subdir/ remoteSrv:/tmp/.

vBeachten Sie, dass ich der Befehlszeile eine zusätzliche Option ( -ruvv) hinzugefügt habe, um detailliertere Informationen darüber zu erhalten, was beim Ausführen des Befehls ausgeschlossen oder eingeschlossen wurde. Mit dem festen Basisverzeichnis und der zusätzlichen Option vwar es etwas einfacher, die richtige Include-Datei zu erstellen:

+ data/
+ data/text_forms/
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*
- *

Alle +Zeilen müssen vor dem platziert werden - *, insbesondere für Verzeichnisse, da ich jedes Verzeichnis zum Scannen explizit einschließen musste, auch wenn ich die Dateien in diesen Verzeichnissen nicht direkt abrufen möchte. Ich habe testweise ein data/anyTestFile1und ein hinzugefügt data/text_forms/anyTestFile2, da ich nicht sicher war, ob diese erfasst werden, aber das taten sie nicht, also macht es, was ich will... endlich.

verwandte Informationen