![Tar文件提取存档中的所有内容,但一个特定文件夹除外](https://linux22.com/image/679857/Tar%E6%96%87%E4%BB%B6%E6%8F%90%E5%8F%96%E5%AD%98%E6%A1%A3%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E5%86%85%E5%AE%B9%EF%BC%8C%E4%BD%86%E4%B8%80%E4%B8%AA%E7%89%B9%E5%AE%9A%E6%96%87%E4%BB%B6%E5%A4%B9%E9%99%A4%E5%A4%96.png)
我正在使用tar -xf archive.tar -C /home/user/target/folder
(在 bash 脚本中)将特定档案(archive.tar)的内容提取到目标目录(/home/user/target/folder)中,以便目标目录的所有现有内容将被新内容(包含在档案中)覆盖。
一切运行良好,但我想省略档案中的一个目录(从提取并因此覆盖目标文件夹中的现有目录)...例如,如果archive.tar包含:
folderA/
folderB/
folderC/
folderD/
fileA.php
fileB.php
fileC.xml
我怎样才能提取(并覆盖)除(例如)folderC/之外的所有内容?
tar --version
输出tar (GNU tar) 1.23
答案1
使用 -X 选项或 --exclude 选项
filename 是包含您想要排除的模式列表的文件的名称。pattern 是您想要排除的单个模式。
要排除 FolderC,请使用以下命令
tar -xf archive.tar --exclude folderC -C /home/user/target/folder
在您的系统上使用 man tar 来完整解释这两个选项。