25

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)

4

3 回答 3

15

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

tar --exclude=/sys --exclude=/proc /
于 2012-05-09T07:29:09.363 回答
7

在这种情况下,您可能需要使用:

--anchored --exclude=sys/\*

因为如果您的 tar 没有显示前导的“/”,则您的过滤器有问题。

于 2013-04-09T18:14:11.527 回答
6

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

创建标签文件,

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

然后,

tar -czf backup.tar.gz --exclude-tag-all=.exclude_from_backup *
于 2012-11-08T19:12:58.270 回答