tar排除单个文件/目录,而不是模式

时间:2012-05-09 07:13:39

标签: tar

我正在使用tar进行服务器的每日备份,并希望避免备份/ proc和/ sys系统目录,但不排除任何名为“proc”或“sys”的目录。文件树。

例如,有以下目录树(“ bla ”是普通文件):

# find
.
./sys
./sys/bla
./foo
./foo/sys
./foo/sys/bla

我想排除./sys,但 ./foo/sys

我似乎无法找到那样做的--exclude模式......

# tar cvf /dev/null * --exclude=sys
foo/

...或

# tar cvf /dev/null * --exclude=/sys
foo/
foo/sys/
foo/sys/bla
sys/
sys/bla

有什么想法吗? (Linux Debian 6)

3 个答案:

答案 0 :(得分:10)

您可以指定排除模式的绝对路径,这样就可以归档其他sysproc目录:

tar --exclude=/sys --exclude=/proc /

答案 1 :(得分:6)

在这种情况下,您可能希望使用:

--anchored --exclude=sys/\*

因为如果你的tar没有显示前导“/”,你就会遇到过滤器问题。

答案 2 :(得分:5)

使用tar,您可以通过将标记文件放在任何应该跳过的目录中来排除目录。

创建标记文件

touch /sys/.exclude_from_backup
touch /proc/.exclude_from_backup

然后,

tar -czf backup.tar.gz --exclude-tag-all=.exclude_from_backup *