[Ich musste das Beispiel ändern, um zu verdeutlichen, dass es Unterverzeichnisse gibt.]
Angenommen, ich möchte eine Teilmenge meiner Hierarchie neu erstellen. Nehmen wir aus Gründen der Argumentation an, ich möchte Dateien in der Datei filelist.conf sichern
# cat rsync-list
ab*
bb*
und
# find .
.
./abc
./abc/file-in-abc
./abd
./abd/file-in-abd
./aca
./bba
./bbc
./bca
./rsync-list
Das hätte ich gehofft
rsync -arv --include-from=rsync-list --exclude='*' . /somewhere-else
würde abc, abd, bba und bbc neu erstellen. Das Problem ist, dass es nicht in die ab * -Verzeichnisse absteigt, also nicht abc / file-in-abc und abd / file-in-abd. In diesem Sinne ist das ab * also kein Platzhalter, der in abc und abd erweitert und dann synchronisiert wird.
*
stimmt auch nicht mit der/
Shell-Platzhaltererweiterung überein . Verwenden Sie**
stattdessen.Antworten:
Die Manpage listet diese fünf Optionen auf:
--files-from
steht für genaue Dateinamen und--include-from
für Muster, daher sollten Sie dies stattdessen versuchen.Mit
include-from
, nicht wahr müssen angeben+
, aber Sie müssen alles andere auszuschließen. Zum Beispiel gegeben:Dann kann ich nur synchronisieren
image7*.tiff
mit:Die Manpage sagt auch im
INCLUDE/EXCLUDE PATTERN RULES
Abschnitt:quelle
Sie können
--include-from
anstelle von verwenden,--files-from
wenn Sie Platzhalter verwenden möchten.filelist.conf
sollte so aussehen:Sie müssen angeben
+
oder-
in die Datei einschließen oder ausschließen. Die- *
Regel am Ende ist erforderlich, damit Include-Regeln funktionieren, da standardmäßig alles enthalten ist. Stellen Sie dies nicht an die erste Stelle, da es sonst die Include-Regeln überschreibt.quelle