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

21 浏览
0 Comments

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)

admin 更改状态以发布 2023年5月23日
0
0 Comments

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

创建标记文件,

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

然后,

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

0
0 Comments

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

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

0