用於排除備份檔案和快取並僅包含 httpdocs 子目錄的 Tar 備份命令

用於排除備份檔案和快取並僅包含 httpdocs 子目錄的 Tar 備份命令

我正在尋找滿足以下要求的 tar 命令:

我想排除以:backwpup & .zip 結尾的所有文件(中間和之前可以是任何文件,例如uploads/123backwpup-123.zip) 我想排除/media/backup/ & /application/cache/ 區域中的所有文件夾

我從如下所示的級別開始:

  • example.com
  • 範例.de
  • 範例.org

每個都有子目錄:

  1. /ETC/
  2. /httpdocs/
  3. /庫/

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

我用命令嘗試過:

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

但不幸的是用路徑備份wp-內容/上傳/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/

相關內容