Tar 备份命令用于排除备份文件和缓存以及仅包含 httpdocs 子目录

Tar 备份命令用于排除备份文件和缓存以及仅包含 httpdocs 子目录

我正在寻找满足以下要求的 tar 命令:

我想排除所有以以下结尾的文件:backwpup 和 .zip(中间和之前可以是任意文件,例如 uploads/123backwpup-123.zip)我想排除区域 /media/backup/ 和 /application/cache/ 中的所有文件夹

我从如下级别开始:

  • 示例.com
  • 例子.de
  • 示例网站

每个目录都有子目录:

  1. /ETC/
  2. /httpdocs/
  3. /lib/
  4. ...

只需要保存/httpdocs/的内容。

我尝试使用命令:

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

但不幸的是备份路径wp-content/uploads/backwpup-4578-备份/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/

相关内容