Tar-Backup-Befehl zum Ausschließen von Backup-Dateien und Cache und zum Einschließen nur von httpdocs-Unterverzeichnissen

Tar-Backup-Befehl zum Ausschließen von Backup-Dateien und Cache und zum Einschließen nur von httpdocs-Unterverzeichnissen

Ich suche nach einem Tar-Befehl, der die folgenden Anforderungen erfüllt:

Ich möchte alle Dateien mit der Endung: backwpup & .zip ausschließen (dazwischen und davor kann alles stehen, z. B. uploads/123backwpup-123.zip) Ich möchte alle Ordner im Bereich /media/backup/ & /application/cache/ ausschließen

Ich beginne auf einer Ebene, die so aussieht:

  • example.com
  • beispiel.de
  • example.org

Mit jeweils Unterverzeichnissen:

  1. /usw/
  2. /httpdocs/
  3. /Bibliothek/
  4. ...

Es muss nur der Inhalt von /httpdocs/ gespeichert werden.

Ich habe es mit dem folgenden Befehl versucht:

tar --exclude={"*backwpup*.zip", "*/media/backup/*", "*/application/cache/*"} -czvf backup.tar.gz **/httpdocs

Aber leider Backups mit Pfadwp-content/uploads/backwpup-4578-backups/2022-10-31_12-22-31_IKXUCSLD01.zipsind weiterhin enthalten.

Antwort1

Sie können versuchen, den folgenden Tar-Befehl zu verwenden:

tar --exclude='backwpup.zip' --exclude='/media/backup/' --exclude='/application/cache/' -czvf backup.tar.gz example.com/httpdocs example.de/httpdocs example.org/httpdocs

Dieser Befehl schließt alle Dateien mit der Endung „backwpup“ oder „.zip“ sowie Ordner an den angegebenen Speicherorten aus. Außerdem schließt er nur die Unterverzeichnisse „httpdocs“ in jedem Domänenverzeichnis ein.

Antwort2

Vielleicht so?

find * -type d \( -path '*/media/backup/*' -o -path '*/application/cache/*' \) -prune -o -path '*/httpdocs/*' -type f ! -name '*backwpup*.zip' -print0 | tar -czvf backup.tar.gz --null -T -

Antwort3

Vorausgesetzt, Sie verwenden GNU Tar, lesen Sie bitte die Dokumentation zum Ausschließen von Dateien:https://www.gnu.org/software/tar/manual/html_node/exclude.html Dies beschreibt die Musterübereinstimmung im Detail:https://man7.org/linux/man-pages/man7/glob.7.html

Angenommen, Sie verwenden GNU BASH, dann könnten Sie die Verzeichnisse mit einer For-Schleife durchlaufen:https://www.gnu.org/software/bash/manual/html_node/Looping-Constructs.htmlmithilfe der Dateinamenerweiterung (https://www.gnu.org/software/bash/manual/html_node/Filename-Expansion.html)

Am Ende dieser Seite finden Sie gute Beispiele: https://linuxize.com/post/bash-for-loop/

verwandte Informationen