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

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

Frage :Wie kopiert man Ordner rekursiv und schließt bestimmte Ordner/Dateien aus, wenn man rsync verwendet?

Im Allgemeinen verwenden wir den Befehl „cp“, um Dateien zu kopieren, aber leider verfügt der Befehl „cp“ nicht über die Funktion „Ausschließen“, daher müssen wir einige Skripte schreiben, um die unerwünschten Dateien auszuschließen, oder wir können ein anderes Tool verwenden. rsync'.

Aus der Manpage des rsync-Befehls:

$ man rsync
...
  -r, --recursive             recurse into directories
  --exclude=PATTERN           exclude files matching PATTERN

Die Syntax des rsync-Befehls zum Kopieren von Verzeichnissen unter Ausschluss bestimmter Dateien/Verzeichnisse lautet wie folgt:

$ rsync -r --exclude 'file_path' 'SRC' 'DEST'

Wenn wir beispielsweise nicht alle Dateien des Oracle-Ordners nach Oraclebak kopieren möchten, außer „oracle/oradata/rmanbackup“:

$ du -sh oracle/*
40K oracle/extapi
1.1G oracle/oradata                    ------> sub directory of oracle
4.0K oracle/test1
4.0K oracle/test2
4.0K oracle/test3
4.0K oracle/test4
4.0K oracle/test5
# du -sh oracle/oradata/*
4.0K oracle/oradata/date1
4.0K oracle/oradata/date2
4.0K oracle/oradata/date3
4.0K oracle/oradata/date4
4.0K oracle/oradata/date5
1.1G oracle/oradata/rmanbackup  -------> we need to exclude this directory

Der Ausschlusspfad ist der relative Pfad der Datei unter „SRC“, z. wir möchten „oracle/oradata/rmanbackup“ ausschließen, und das übergeordnete Verzeichnis ist oracle, also lautet der Ausschlusspfad „oradata/rmanbackup“:

# rsync -r --exclude 'oradata/rmanbackup' oracle/ oraclebak
# du -sh oraclebak/oracle/*
40K oraclebak/oracle/extapi
24K oraclebak/oracle/oradata
4.0K oraclebak/oracle/test1
4.0K oraclebak/oracle/test2
4.0K oraclebak/oracle/test3
4.0K oraclebak/oracle/test4
4.0K oraclebak/oracle/test5

Sie können auch die Option „–exclude-from=FILE verwenden ” wenn Sie mehr Dateien/Verzeichnisse ausschließen möchten. In diesem Fall müssen Sie nur die auszuschließenden Dateien/Verzeichnisse in einer Datei auflisten und den Dateipfad für die Option „–exclude-from=“

angeben
# man rsync
--exclude-from=FILE     read exclude patterns from FILE

Zum Beispiel:

# rsync -r --exclude-file=/tmp/exclude_list oracle/ oraclebak

Hier enthält
/tmp/exclude_list eine Liste von Dateien/Verzeichnissen, die ausgeschlossen werden sollen, während die anderen kopiert werden.


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

  2. Wie kopiert man rekursiv Dateien nach Dateierweiterung?

  3. Wie verwende ich den Rsync-Befehl unter Linux?

  4. Verwenden von rsync zum Synchronisieren von Dateien

  5. Kann scp Verzeichnisse rekursiv kopieren?

So sichern Sie Dateien und Verzeichnisse mit Rsync unter Linux

So kopieren Sie Dateien mit einer bestimmten Dateierweiterung rekursiv

So schließen Sie bestimmte Dateierweiterungen beim rekursiven Kopieren von Dateien aus

So kopieren Sie Dateien unter Linux mit dem CP-Befehl

So kopieren Sie Dateien und Verzeichnisse im Linux-Terminal

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