GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So schließen Sie Dateien und Verzeichnisse mit Rsync aus

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 Backups erstellen und Dateien zwischen Systemen kopieren. Beim Kopieren von Daten möchten Sie möglicherweise eine oder mehrere Dateien oder Verzeichnisse basierend auf ihrem Namen oder Speicherort ausschließen.

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

Bevor Sie beginnen #

Sie sollten grundlegende Kenntnisse darüber haben, wie rsync funktioniert.

In den folgenden Beispielen verwenden wir rsync mit -a , Möglichkeit. Dies weist rsync an, Verzeichnisse rekursiv zu synchronisieren, spezielle und blockierte Geräte zu übertragen und symbolische Links, Änderungszeiten, Gruppen, Eigentümer und Berechtigungen beizubehalten.

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

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

  • Über eine Befehlszeile , indem Sie --exclude verwenden Möglichkeit.
  • Aus einer Datei , indem Sie --exclude-from verwenden Möglichkeit.

Eine bestimmte Datei ausschließen #

Um eine bestimmte Datei auszuschließen, übergeben Sie den relativen Pfad zu der Datei an --exclude Option.

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

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

Ein bestimmtes Verzeichnis ausschließen #

Das Ausschließen eines bestimmten Verzeichnisses ist dasselbe wie das Ausschließen einer Datei, übergeben Sie einfach den relativen Pfad zum Verzeichnis an --exclude Option wie unten gezeigt:

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

Wenn Sie den Inhalt des Verzeichnisses, aber nicht das Verzeichnis selbst ausschließen möchten, verwenden Sie dir1/* statt dir1 :

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

Mehrere Dateien oder Verzeichnisse ausschließen #

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

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

Wenn Sie lieber einen einzelnen --exclude verwenden möchten Option können Sie die Dateien und Verzeichnisse, die Sie ausschließen möchten, in geschweiften Klammern auflisten {} wie unten gezeigt durch ein Komma getrennt:

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, verwenden Sie anstelle mehrerer --exclude Optionen können Sie die Dateien und Verzeichnisse, die Sie ausschließen möchten, in einer Datei angeben und die Datei an --exclude-from übergeben Option.

Der folgende Befehl macht genau dasselbe wie der obige:

rsync -a --exclude-from='exclude-file.txt' src_directory/ dst_directory/
Ausschlussdatei.txt
file1.txt
dir1/*
dir2

Mehrere Dateien oder Verzeichnisse basierend auf einem Muster ausschließen #

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

Zum Beispiel, um alle .jpg auszuschließen Dateien, die Sie ausführen würden:

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

Etwas kniffliger ist es, alle anderen Dateien und Verzeichnisse auszuschließen, außer denen, die einem bestimmten Muster entsprechen. Angenommen, Sie möchten alle anderen Dateien und Verzeichnisse ausschließen, mit Ausnahme der Dateien, die auf .jpg enden .

Eine Möglichkeit ist die Verwendung des folgenden Befehls:

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

Bei Verwendung mehrerer Optionen zum Einschließen/Ausschließen gilt die erste Übereinstimmungsregel.

  • --include='*.jpg' - Zuerst fügen wir alle .jpg ein Dateien.
  • --include='*/' - Dann schließen wir alle Verzeichnisse innerhalb von src_directory ein Verzeichnis. Ohne dieses wird rsync nur *.jpg kopieren Dateien im obersten Verzeichnis.
  • -m - Entfernt die leeren Verzeichnisse.

Eine andere Möglichkeit wäre, die Ausgabe von find zu pipen commandto rsync:

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 aus der Standardeingabe aufgenommen werden (Dateien, die vom Find-Befehl übergeben werden).

Schlussfolgerung #

In diesem Tutorial haben Sie gelernt, wie Sie Dateien und Verzeichnisse beim Übertragen von Daten mit Rsync ausschließen. Auf der Handbuchseite des Rsync-Benutzers gibt es noch viel mehr über Rsync zu erfahren.


Linux
  1. So komprimieren Sie Dateien und Verzeichnisse unter Linux (mit Beispielen)

  2. So schließen Sie bestimmte Verzeichnisse vom Kopieren in Linux aus

  3. So archivieren Sie Dateien und Verzeichnisse unter Linux [Teil 2]

  4. 6 rsync-Beispiele zum Ausschließen mehrerer Dateien und Verzeichnisse mit Exclude-From

  5. Wie kann ich Dateien standardmäßig mit rsync ausschließen?

So verschieben Sie Dateien und Verzeichnisse in Linux (mv-Befehl)

So übertragen Sie Dateien mit Rsync über SSH

So verwenden Sie den cp-Befehl zum Kopieren von Dateien und Verzeichnissen

So synchronisieren Sie Dateien und Verzeichnisse mit Zaloha.sh

So sichern Sie Dateien und Verzeichnisse mit Rsync unter Linux

Linux-Dateien und -Verzeichnisse mit rsync synchron halten