我正在使用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)
答案 0 :(得分:10)
您可以指定排除模式的绝对路径,这样就可以归档其他sys
或proc
目录:
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 *