Linux:Gnu-Tar 不包括

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 也被排除了。我怎样才能包含 data/tmp 而排除 tmp?更重要的是,我应该如何理解 tar 的通配符解释和排除模式匹配。排除文件中的每个模式是否都像 grep 一样运行?

谢谢!

答案1

尝试修改tar命令tar -X exclude -cvpf - .(例如,将 更改*.)并修改排除文件以说明

./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包括在内(./b/tmp/farr被拾取),但 的内容./tmp不包括在内(./tmp/frotz未被拾取)。

tartar (GNU tar) 1.26在 Fedora 16 上。

相关内容