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

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

Rsync ist ein sehr leistungsfähiges Tool, um Backups zu erstellen oder Dateien und Verzeichnisse zwischen zwei verschiedenen Standorten (oder Servern) zu synchronisieren.

Das wissen Sie bereits, da wir Ihnen bereits früher praktische Beispiele zu rsync vorgestellt haben.

In einer typischen Sicherungssituation möchten Sie möglicherweise eine oder mehrere Dateien (oder Verzeichnisse) von der Sicherung ausschließen. Möglicherweise möchten Sie auch einen bestimmten Dateityp von rsync ausschließen.

Dieser Artikel erklärt anhand von Beispielen, wie Sie mehrere Dateien und/oder Verzeichnisse während rsync ignorieren.

Erstellen Sie zunächst eine Beispielverzeichnisstruktur wie unten gezeigt (mit einigen leeren Dateien), die zu Testzwecken verwendet werden kann.

$ cd ~
$ mkdir -p source/dir1/dir2
$ mkdir -p source/dir3
$ touch source/file1.txt
$ touch source/file2.txt
$ touch source/dir1/dir2/file3.txt
$ touch source/dir3/file4.txt

Der obige Befehl erstellt ein Quellverzeichnis (unter Ihrem Home-Verzeichnis) mit der folgenden Struktur.

source
- file1.txt
- file2.txt
- dir1
  - dir2
    - file3.txt
- dir3
  - file4.txt

1. Bestimmtes Verzeichnis ausschließen

Wenn Sie dir1 (einschließlich aller Unterverzeichnisse) nicht vom Quell- in den Zielordner synchronisieren möchten, verwenden Sie die Option rsync –exclude wie unten gezeigt.

$ rm -rf destination

$ rsync -avz --exclude 'dir1' source/ destination/
building file list ... done
created directory dest
./
file1.txt
file2.txt
dir3/
dir3/file4.txt

Stellen Sie sicher, dass dir1 nicht vom Quellverzeichnis in das Zielverzeichnis kopiert wird.

$ find destination
destination
destination/file2.txt
destination/file1.txt
destination/dir3
destination/dir3/file4.txt

2. Mehrere Verzeichnisse ausschließen, die einem Muster entsprechen

Das folgende Beispiel schließt alle Verzeichnisse (oder Unterverzeichnisse) unter source/ aus, die dem Muster „dir*“

entsprechen
$ rm -rf destination

$ rsync -avz --exclude 'dir*' source/ destination/
building file list ... done
created directory destination
./
file1.txt
file2.txt

Überprüfen Sie das Zielverzeichnis, um sicherzustellen, dass keine Verzeichnisse mit dem Schlüsselwort „dir“ kopiert wurden.

$ find destination
destination
destination/file2.txt
destination/file1.txt

3. Eine bestimmte Datei ausschließen

Um eine bestimmte Datei auszuschließen, verwenden Sie den relativen Pfad der Datei in der Ausschlussoption, wie unten gezeigt.

$ rm -rf destination

$ rsync -avz --exclude 'dir1/dir2/file3.txt' source/ destination/
building file list ... done
created directory destination
./
file1.txt
file2.txt
dir1/
dir1/dir2/
dir3/
dir3/file4.txt

Überprüfen Sie das Zielverzeichnis, um sicherzustellen, dass es nicht die spezifische Datei kopiert hat (dir1/dir2/file3.txt in diesem Beispiel).

$ find destination
destination
destination/file2.txt
destination/file1.txt
destination/dir1
destination/dir1/dir2
destination/dir3
destination/dir3/file4.txt

4. Ausschlusspfad ist immer relativ

Wenn Sie nicht aufpassen, könnten Sie diesen Fehler machen.

Im folgenden Beispiel scheint die Exclude-Option einen vollständigen Pfad zu haben (d. h. /dir1/dir2/file3.txt). Aus rsync-Sicht ist der Ausschlusspfad jedoch immer relativ und wird als dir1/dir2/file3.txt behandelt. Im Beispiel unten sucht rsync nach dir1 im Quellverzeichnis (und nicht im /root-Verzeichnis).

$ rsync -avz --exclude '/dir1/dir2/file3.txt' source/ destination/

Der obige Befehl ist also genau derselbe wie der folgende. Nur um Verwirrung zu vermeiden (und um es leichter lesbar zu machen), geben Sie kein / vor dem Exclude-Pfad ein.

$ rsync -avz --exclude 'dir1/dir2/file3.txt' source/ destination/

5. Bestimmten Dateityp ausschließen

Um einen bestimmten Dateityp mit einer bestimmten Erweiterung auszuschließen, verwenden Sie das entsprechende Muster. Um beispielsweise alle Dateien auszuschließen, die .txt als Erweiterung enthalten, gehen Sie wie folgt vor.

$ rsync -avz --exclude '*.txt' source/ destination/
building file list ... done
created directory destination
./
dir1/
dir1/dir2/
dir3/

Überprüfen Sie das Zielverzeichnis, um sicherzustellen, dass die *.txt-Dateien nicht kopiert wurden.

$ find destination
destination
destination/dir1
destination/dir1/dir2
destination/dir3

Hinweis: Das Obige ist sehr hilfreich, wenn Sie Ihr Home-Verzeichnis sichern möchten, aber all diese riesigen Bild- und Videodateien mit einer bestimmten Dateierweiterung ausschließen möchten.

6. Mehrere Dateien und Verzeichnisse gleichzeitig ausschließen

Wenn Sie mehrere Dateien und Verzeichnisse ausschließen möchten, können Sie wie unten gezeigt immer mehrere rsync-Ausschlussoptionen in der Befehlszeile angeben.

$ rsync -avz --exclude file1.txt --exclude dir3/file4.txt source/ destination/

Warte ab. Was wäre, wenn ich unzählige Dateien hätte, die ich von rsync ausschließen möchte?

Ich kann sie nicht immer wieder in der Befehlszeile hinzufügen, indem ich mehrere –exclude verwende, was schwer zu lesen ist und den rsync-Befehl später nur schwer wiederverwenden kann.

Der bessere Weg ist also, die Option rsync –exclude-from zu verwenden, wie unten gezeigt, wo Sie alle Dateien (und Verzeichnisse) auflisten können, die Sie in einer Datei ausschließen möchten.

Erstellen Sie zunächst eine Textdatei mit einer Liste aller Dateien und Verzeichnisse, die Sie nicht sichern möchten. Dies ist die Liste der Dateien und Verzeichnisse, die Sie vom rsync ausschließen möchten.

$ vim exclude-list.txt
file1.txt
dir3/file4.txt

Als nächstes führen Sie rsync mit der Option –exclude-from mit der exclude-list.txt aus, wie unten gezeigt.

$ rm -rf destination

$ rsync -avz --exclude-from 'exclude-list.txt' source/ destination/
building file list ... done
created directory destination
./
file2.txt
dir1/
dir1/dir2/
dir1/dir2/file3.txt
dir3/

Überprüfen Sie das Zielverzeichnis, um sicherzustellen, dass die in der Datei exclude-list.txt aufgelisteten Dateien und Verzeichnisse nicht gesichert sind.

$ find destination
destination
destination/file2.txt
destination/dir1
destination/dir1/dir2
destination/dir1/dir2/file3.txt
destination/dir3

Linux
  1. So senden und laden Sie Dateien mit Rsync herunter

  2. Verwenden von rsync zum Synchronisieren von Dateien

  3. Wie kopiert man Dateien unter Linux und Unix? 10 cp Befehlsbeispiele

  4. Wie man Verzeichnisse rekursiv mit rsync kopiert und dabei bestimmte Dateien ausschließt

  5. Verwenden von Rsync-Optionen zum Einschließen und Ausschließen, um Verzeichnisse und Dateien nach Muster einzuschließen

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

So löschen Sie Dateien und Verzeichnisse mit dem Terminal in Debian 10

So löschen Sie Dateien und Verzeichnisse mit der Linux-Befehlszeile