Tar 排除不起作用?

Tar 排除不起作用?
tar -cvf file.tar --exclude=thumbs/ \
                  --exclude=uploads_event/ \
                  --exclude=uploads_forum/ \
                  --exclude=uploads_admin/ \
                  --exclude=uploads_userpoints/ \
                  --exclude=uploads_group/ \
                  --exclude=up_old/ \
                  --exclude=uploads_user/ \
                  --exclude=uploads_wall/ \
                  directory_to_tar/

我错了吗?尝试 tar 整个目录,但完全排除所有这些目录以及这些文件夹中的任何文件。

答案1

使用 GNU tar 时,您无法在所有这些排除项上包含尾部斜杠。不过,它可以与 BSD tar 一起使用。

答案2

应该接受迈克尔·洛曼 (Michael Lowman) 的回答,但既然我无论如何都编造了一些例子,我将对其进行概括并保留它,也许有人会发现它的价值。

重复迈克尔的回答,看来你的选项后面的斜杠--exclude是你的问题。

我还要注意,当您有大量内容需要排除时,将其放入文件中并使用 -X 选项包含该文件会更容易。

以下是使用 --exclude 和 -X 的几个实际示例

g3 0 /home/jj33/swap/t > mkdir -p dir/d1 dir/d2
g3 0 /home/jj33/swap/t > touch dir/{d1,d2}/{f1,f2,f3}
g3 0 /home/jj33/swap/t > find . -type f
./dir/d1/f1
./dir/d1/f2
./dir/d1/f3
./dir/d2/f1
./dir/d2/f2
./dir/d2/f3

#### using the trailing slash, as in your question, doesn't work:
g3 0 /home/jj33/swap/t > tar -cvf file.tar --exclude=d1/f2 --exclude=d2/ dir
dir/
dir/d1/
dir/d1/f1
dir/d1/f3
dir/d2/
dir/d2/f1
dir/d2/f2
dir/d2/f3

# removing the / works better
g3 0 /home/jj33/swap/t > tar -cvf file.tar --exclude=d1/f2 --exclude=d2 dir      
dir/
dir/d1/
dir/d1/f1
dir/d1/f3

# example using a file and -X
g3 0 /home/jj33/swap/t > echo d1/f2 >exclude.txt
g3 0 /home/jj33/swap/t > echo d2 >>exclude.txt  
g3 0 /home/jj33/swap/t > cat exclude.txt 
d1/f2
d2
g3 0 /home/jj33/swap/t > tar -cvf file.tar -X exclude.txt  dir              
dir/
dir/d1/
dir/d1/f1
dir/d1/f3
g3 0 /home/jj33/swap/t >

相关内容