我正在尝试使用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 。