Команда резервного копирования Tar для исключения файлов резервных копий и кэша, а также включения только подкаталогов httpdocs

Команда резервного копирования Tar для исключения файлов резервных копий и кэша, а также включения только подкаталогов httpdocs

Я ищу команду tar, которая отвечает следующим требованиям:

Я хочу исключить все файлы, заканчивающиеся на: backwpup и .zip (между ними и до них может быть что угодно, например uploads/123backwpup-123.zip) Я хочу исключить все папки в области /media/backup/ и /application/cache/

Я начинаю с уровня, который выглядит так:

  • пример.com
  • пример.de
  • пример.org

С подкаталогами для каждого:

  1. /и т. д/
  2. /httpdocs/
  3. /lib/
  4. ...

Необходимо сохранить только содержимое /httpdocs/.

Я попробовал это с помощью команды:

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

Но к сожалению резервные копии с путемwp-content/uploads/backwpup-4578-backups/2022-10-31_12-22-31_IKXUCSLD01.zipвсе еще включены.

решение1

Вы можете попробовать использовать следующую команду tar:

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

Эта команда исключает все файлы, заканчивающиеся на "backwpup" или ".zip", а также папки в указанных местах. Она также включает только подкаталоги "httpdocs" в каждом каталоге домена

решение2

Может быть, так?

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 -

решение3

Если вы используете GNU tar, ознакомьтесь с документацией о том, как исключить файлы:https://www.gnu.org/software/tar/manual/html_node/exclude.html Ниже подробно описывается сопоставление с образцом:https://man7.org/linux/man-pages/man7/glob.7.html

Предполагая, что вы используете GNU BASH, вы можете перебрать каталоги с помощью цикла for:https://www.gnu.org/software/bash/manual/html_node/Looping-Constructs.htmlс использованием расширения имени файла (https://www.gnu.org/software/bash/manual/html_node/Filename-Expansion.html)

В конце этой страницы приведены хорошие примеры: https://linuxize.com/post/bash-for-loop/

Связанный контент