Sagen wir, ich habe
SRC
001.jpg
002.jpg
001.txt
a.zip
DEST
hello.jpg
rsync -d --delete SRC:{*.jpg,*.txt} DEST
Es entfernt hello.jpg nicht von DEST. Irgendeine Idee, wie man das archiviert?
Der Grund, warum Ihr Befehl nicht funktioniert, wird in der Handbuchseite für rsync erläutert (Hervorhebung hinzugefügt):
--löschen
Dadurch wird rsync angewiesen, nicht benötigte Dateien auf der empfangenden Seite (nicht auf der sendenden Seite) zu löschen, sondern nur für die Verzeichnisse, die synchronisiert werden. Sie müssen rsync aufgefordert haben, das gesamte Verzeichnis zu senden (z. B. "dir" oder "dir /"), ohne einen Platzhalter für den Inhalt des Verzeichnisses zu verwenden (z. B. "dir / *"), da der Platzhalter durch die Shell erweitert wird und rsync somit einen erhält Anforderung, einzelne Dateien zu übertragen, nicht das übergeordnete Verzeichnis der Dateien. Dateien, die von der Übertragung ausgeschlossen sind, werden ebenfalls nicht gelöscht, es sei denn, Sie verwenden die Option --delete-excluded oder markieren die Regeln als nur auf der sendenden Seite zutreffend (siehe die Modifizierer include / exclude im Abschnitt FILTER RULES).
Also, wenn du rennst
$ rsync -d --delete SRC:{*.jpg,*.txt} DEST
Die unerwünschten Dateien in DEST werden nicht gelöscht, da Sie nicht nach einem zu synchronisierenden Verzeichnis gefragt haben, sondern nur nach einer Handvoll bestimmter Dateien. Versuchen Sie Folgendes, um die gewünschten Ergebnisse zu erzielen:
rsync -d --delete-excluded --include '*.jpg' --include '*.txt' --exclude '*' SRC/ DEST/
Beachten Sie, dass die Reihenfolge der Einschluss- und Ausschlussrichtlinien von Bedeutung ist. Im Wesentlichen wird jede Datei in der angegebenen Reihenfolge mit den Einschluss- oder Ausschlussmustern verglichen. Daher werden Dateien mit den Erweiterungen .jpg oder .txt synchronisiert, da sie mit den "eingeschlossenen" Mustern übereinstimmen, bevor sie mit dem ausgeschlossenen "*" Muster übereinstimmen. Alles andere wird durch das --exclude '*'
Muster ausgeschlossen. Die --delete-excluded
Option stellt sicher, dass auch ausgeschlossene Dateien auf der DEST-Seite gelöscht werden.
--delete-excluded
. Ohne es nur*.jpg
und*.txt
kann auf der Zielseite gelöscht werden. Damit würden auch nicht verwandte Dateien gelöscht. Dieses Tutorial zu Rsync-Filtern könnte Sie interessieren .