Android

So schließen Sie Dateien und Verzeichnisse mit rsync aus

Dateien synchron halten mit "Sync Folders Pro" für den Mac - Sevens App Blog

Dateien synchron halten mit "Sync Folders Pro" für den Mac - Sevens App Blog

Inhaltsverzeichnis:

Anonim

Rsync ist ein schnelles und vielseitiges Befehlszeilenprogramm, das Dateien und Ordner zwischen zwei Standorten über eine Remote-Shell synchronisiert.

Mit Rsync können Sie Daten spiegeln, inkrementelle Sicherungen erstellen und Dateien zwischen Systemen kopieren. Möglicherweise möchten Sie beim Kopieren von Daten eine oder mehrere Dateien oder Verzeichnisse anhand ihres Namens oder Speicherorts ausschließen.

In diesem Tutorial zeigen wir Ihnen, wie Sie Dateien und Verzeichnisse mit rsync ausschließen können.

Bevor Sie beginnen

Sie sollten über Grundkenntnisse in der Funktionsweise von rsync verfügen.

In den folgenden Beispielen wird rsync mit der Option -a , verwendet. Dadurch wird rsync angewiesen, Verzeichnisse rekursiv zu synchronisieren, spezielle Geräte zu übertragen und Geräte zu blockieren und symbolische Links, Änderungszeiten, Gruppen-, Besitz- und Berechtigungen beizubehalten.

Wenn Sie Dateien oder Verzeichnisse ausschließen, müssen Sie ihre relativen Pfade zum Quellverzeichnis verwenden.

Es gibt zwei Optionen, um die Dateien und Verzeichnisse anzugeben, die Sie ausschließen möchten:

  • Verwenden Sie in einer Befehlszeile die --exclude --exclude. --exclude Sie in einer Datei die Option --exclude-from .

Eine bestimmte Datei ausschließen

--exclude zum Ausschließen einer bestimmten Datei den relativen Pfad zur Datei an die Option --exclude .

Im folgenden Beispiel wird die Datei src_directory/file.txt nicht übertragen:

rsync -a --exclude 'file.txt' src_directory/ dst_directory/

Ein bestimmtes Verzeichnis ausschließen

Das Ausschließen eines bestimmten Verzeichnisses entspricht dem Ausschließen einer Datei. --exclude einfach den relativen Pfad zum Verzeichnis an die Option --exclude (siehe unten):

rsync -a --exclude 'dir1' src_directory/ dst_directory/

rsync -a --exclude 'dir1/*' src_directory/ dst_directory/

Schließen Sie mehrere Dateien oder Verzeichnisse aus

Um mehrere Dateien oder Verzeichnisse auszuschließen, geben --exclude einfach mehrere --exclude Optionen an:

rsync -a --exclude 'file1.txt' --exclude 'dir1/*' --exclude 'dir2' src_directory/ dst_directory/

rsync -a --exclude={'file1.txt', 'dir1/*', 'dir2'} src_directory/ dst_directory/

Wenn die Anzahl der Dateien und / oder Verzeichnisse, die Sie ausschließen möchten, groß ist, können Sie anstelle mehrerer --exclude Optionen die Dateien und Verzeichnisse angeben, die Sie in einer Datei ausschließen möchten, und die Datei an --exclude-from Möglichkeit.

Der Befehl unten macht genau das Gleiche wie der obige:

rsync -a --exclude-from='exclude-file.txt' src_directory/ dst_directory/ exclude-file.txt

file1.txt dir1/* dir2

Schließen Sie mehrere Dateien oder Verzeichnisse basierend auf einem Muster aus

Mit rsync können Sie auch Dateien und Verzeichnisse ausschließen, die auf einem Muster basieren, das mit dem Datei- oder Verzeichnisnamen übereinstimmt.

Um beispielsweise alle .jpg Dateien auszuschließen, die Sie ausführen würden:

rsync -a --exclude '*.jpg*' src_directory/ dst_directory/

Es ist etwas schwieriger, alle anderen Dateien und Verzeichnisse mit Ausnahme derjenigen, die einem bestimmten Muster entsprechen, auszuschließen. Angenommen, Sie möchten alle anderen Dateien und Verzeichnisse mit Ausnahme der Dateien mit der Endung .jpg .

Eine Möglichkeit besteht darin, den folgenden Befehl zu verwenden:

rsync -a -m --include='*.jpg' --include='*/' --exclude='*' src_directory/ dst_directory/

Bei Verwendung mehrerer Einschluss- / Ausschlussoptionen gilt die erste Übereinstimmungsregel.

  • --include='*.jpg' .jpg --include='*.jpg' - Zuerst werden alle .jpg Dateien eingeschlossen. --include='*/' - Dann schließen wir alle Verzeichnisse in das Verzeichnis in src_directory . Ohne diese Option kopiert rsync nur *.jpg Dateien in das oberste Verzeichnis. -m - Entfernt die leeren Verzeichnisse.

Eine andere Möglichkeit wäre, die Ausgabe des Befehls find an rsync weiterzuleiten:

find src_directory/ -name "*.jpg" -printf %P\\0\\n | rsync -a --files-from=- src_directory/ dst_directory/

  • -printf %P\\0\\n - entfernt das src_directory/ aus dem Dateipfad. --files-from=- - bedeutet, dass nur die Dateien der Standardeingabe enthalten sind (Dateien, die vom Befehl find übergeben wurden).

Fazit

In diesem Lernprogramm haben Sie gelernt, wie Sie Dateien und Verzeichnisse beim Übertragen von Daten mit Rsync ausschließen. Weitere Informationen zu Rsync finden Sie auf der Seite Rsync-Benutzerhandbuch.

rsync terminal