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 >