我正在使用tar服务器的每日备份,并希望避免备份/ proc和/ sys系统目录,但不排除文件树中其他位置的任何名为"proc"或"sys"的目录.
例如,具有以下目录树(" bla "是普通文件):
# find
.
./sys
./sys/bla
./foo
./foo/sys
./foo/sys/bla
Run Code Online (Sandbox Code Playgroud)
我想排除./sys但不是 ./foo/sys.
我似乎找不到--exclude那样做的模式......
# tar cvf /dev/null * --exclude=sys
foo/
Run Code Online (Sandbox Code Playgroud)
要么...
# tar cvf /dev/null * --exclude=/sys
foo/
foo/sys/
foo/sys/bla
sys/
sys/bla
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?(Linux Debian 6)
Cha*_*esB 10
您可以指定排除模式的绝对路径,这样就可以存档其他目录sys或proc目录:
tar --exclude=/sys --exclude=/proc /
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您可能希望使用:
--anchored --exclude=sys/\*
Run Code Online (Sandbox Code Playgroud)
因为如果你的tar没有显示前导"/",你就会遇到过滤器问题.
使用tar,您可以通过将标记文件放在应跳过的任何目录中来排除目录.
创建标记文件,
touch /sys/.exclude_from_backup
touch /proc/.exclude_from_backup
Run Code Online (Sandbox Code Playgroud)
然后,
tar -czf backup.tar.gz --exclude-tag-all=.exclude_from_backup *
Run Code Online (Sandbox Code Playgroud)