Linux:Gnu-Tar不包括在内

我正在尝试使用GNU-Tar来执行Linux服务器的完整备份。 文件系统如下所示:

├── backup ├── data │  ├── d1 │  ├── d2 │  └── tmp │  ├── tt1 │  ├── tt2 │  └── tt3 ├── exclude ├── home │  ├── a │  ├── b │  ├── c │  └── d ├── proc │  ├── pa │  ├── pb │  ├── pc │  └── pd ├── sys │  ├── s1 │  ├── s2 │  ├── s3 │  └── s4 └── tmp ├── t1 ├── t2 └── t3 

我想排除tmp和proc,但保留/ data / tmp / *。 但是,使用以下命令:

 $tar -X exclude -cvpf - * | wc -l 

与此排除文件:

 $cat exclude proc/* tmp/* 

我发现/ data / tmp也被排除在外。 如何在不包含tmp的情况下包含数据/ tmp? 更重要的是,我应该如何理解tar的通配符解释并排除模式匹配。 排除文件中的每个模式都像grep一样吗?

谢谢!

尝试修改tar命令tar -X exclude -cvpf - . (即,将*更改为a),并修改排除文件说

 ./proc/* ./tmp/* 

编辑 :真的? 为我工作。 这是我的目录结构:

 |-- a | |-- foo |-- b | |-- bar | |-- tmp | | |-- farr |-- tmp | |-- frotz 

这是我的../exclude文件的内容

 ./tmp/* 

然后我做tar cvf ../test.tar -X ../exclude . 并得到

 ./ ./b/ ./b/bar ./b/tmp/ ./b/tmp/farr ./tmp/ ./a/ ./a/foo 

请注意,包含./b/tmp/farr的内容( ./b/tmp/farr被拾取),但是./tmp不是( ./tmp/frotz不被拾取)。

在Fedora 16上tar是tar (GNU tar) 1.26