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:
- /usw/
- /httpdocs/
- /Bibliothek/
- ...
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/