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 rsync
einfach 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 subdir
Verzeichnisses, 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 subdir
in /usr2/subdir
eingeschlossen 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/.
v
Beachten 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 v
war 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/anyTestFile1
und 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.