
我正在尋找滿足以下要求的 tar 命令:
我想排除以:backwpup & .zip 結尾的所有文件(中間和之前可以是任何文件,例如uploads/123backwpup-123.zip) 我想排除/media/backup/ & /application/cache/ 區域中的所有文件夾
我從如下所示的級別開始:
- example.com
- 範例.de
- 範例.org
每個都有子目錄:
- /ETC/
- /httpdocs/
- /庫/
- …
只需要保存/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/